導航:首頁 > 編程語言 > python實現wget

python實現wget

發布時間:2022-12-13 20:22:37

python 如何使用wget

你可以使用 subprocess 模塊,檢查執行 subprocess.call("Your-Command") 後的返回值:


㈡ 怎麼使linux或者shell下的wget命令在python腳本中起作用

from subprocess import call
然後就
retn=call(cmd,shell=True)

㈢ python編程遇到的幾個坑

1. 爬個別特定網站,不一定得用python寫爬蟲,多數情況wget一條命令多數網站就能爬的不錯,真的玩到自己寫爬蟲了,最終遇到的無非是如何做大做壯,怎麼做分布式爬蟲。scrapy這種價值接近0,非同步或者多線程搞抓取,選一個成熟的基於磁碟的隊列庫,kafka之類的,scrapy幫了啥?
2. http庫眾多,還有gevent庫monkey patch以後coroutine的玩這一選擇,規模千萬的話urllib3很好。
3. 對付網站的諸如登錄、ajax,這種不過是體力民工活,不展開了。
4. 速度很重要,放ec2或者國內的雲上跑,很重要的指標是你每一億網頁爬下來成本多少,爬的時候比如4核一個虛擬機節點,你能inbound貸款用足100mbps嗎。
5. beautifulsoup太慢,全網的爬,encoding的分析也要要快,c實現的chardet還行

最關鍵的,永遠是爬下來以後的信息的提取、分析、使用,就是另外一個話題了。
1.學會使用chrome瀏覽器查看通信以及查看元素格式
2.增加User-Agent, 這是最簡單的反爬措施了
3.寫爬蟲最好使用Ipython,在互動式的環境下,可以時刻了解自己問題具體出在哪裡
4.使用requests
5.用get或者post下好html之後,要確認你需要的東西html裡面有,而不是之後用ajax或者javascript載入的。
6.解析的話,BeautifulSoup不錯。對於少數非常特殊的,可以考慮用re。
7,需要大量採集數據的話,學會使用框架,比如scrapy。
進階:
加入網站需要模擬登陸,裡面使用了很多ajax或者javascript,或者反爬蟲厲害,用requests的session,注意F12查看到底發送了什麼數據。
實在不會,就使用模擬瀏覽器吧,推薦selenium,雖然速度慢點,內存多點,但是真的很省力,而且基本查不出來。
最後,爬蟲速度不要太快,加上time.sleep(1),盡量少用多線程,別人建站也不容易,(尤其是小站)你不給別人帶來很大的麻煩,別人也就睜一隻眼閉一隻眼了,否則封IP不是好玩的。

有些頁面喜歡使用redirect,然而requests的get和post方法中默認是直接跳轉的!很可能你就帶著錯誤的cookies和headers跳轉了,所以務必將allow_redirects參數設為false

㈣ centOS如何升級python

centOS下升級python版本的詳細步驟

1、可利用linux自帶下載工具wget下載,如下所示:

筆者安裝的是最小centos系統,所以使用編譯命令前,必須安裝wget服務,讀者如果安裝的是界面centos系統,或者使用過編譯工具則可跳過安裝wget,直接進行下邊的編譯步驟。

wget http://www.python.org/ftp/python/3.3.0/Python-3.3.0.tgz

2、下載完成後到下載目錄下,解壓

tar -xzvf Python-3.3.0.tgz

3、進入解壓縮後的文件夾

cd Python-3.3.0

相關推薦:《Python教程》

4、在編譯前先在/usr/local建一個文件夾python3(作為python的安裝路徑,以免覆蓋老的版本)

mkdir /usr/local/python3 (此處新建文件夾用mkdir,如果是新建文件則用touch)

5、開始編譯安裝

筆者安裝的是最小centos系統,所以使用編譯命令前,必須安裝編譯套件gcc,讀者如果安裝的是界面centos系統,或者使用過編譯工具則可跳過安裝gcc,直接進行下邊的編譯步驟

./configure --prefix=/usr/local/python3

make

make install

6、此時沒有覆蓋老版本,再將原來/usr/bin/python鏈接改為別的名字(筆者保留了兩個版本的,一個python,一個python3,所以第6步筆者略過,把第7步的鏈接後名字改為python3,讀者可按正常步驟,實現的效果相同)

mv /usr/bin/python /usr/bin/python_old2

7、再建立新版本python的鏈接

ln -s /usr/local/python3/bin/python3 /usr/bin/python

8、這個時候輸入

python -V

9、就會顯示出python的新版本信息

[idolaoxu@localhost home]# python -V

Python 3.3.0

PS:如果不建立新安裝路徑python3,而是直接默認安裝,則安裝後的新python應該會覆蓋linux下自帶的老版本,也有可能不覆蓋,具體看安裝過程了,這個大家可以自己試驗下,當然如果還想保留原來的版本,那麼這種方法最好不過了。

㈤ python 多進程和多線程配合

由於python的多線程中存在PIL鎖,因此python的多線程不能利用多核,那麼,由於現在的計算機是多核的,就不能充分利用計算機的多核資源。但是python中的多進程是可以跑在不同的cpu上的。因此,嘗試了多進程+多線程的方式,來做一個任務。比如:從中科大的鏡像源中下載多個rpm包。
#!/usr/bin/pythonimport reimport commandsimport timeimport multiprocessingimport threadingdef download_image(url):
print '*****the %s rpm begin to download *******' % url
commands.getoutput('wget %s' % url)def get_rpm_url_list(url):
commands.getoutput('wget %s' % url)
rpm_info_str = open('index.html').read()

regu_mate = '(?<=<a href=")(.*?)(?=">)'
rpm_list = re.findall(regu_mate, rpm_info_str)

rpm_url_list = [url + rpm_name for rpm_name in rpm_list] print 'the count of rpm list is: ', len(rpm_url_list) return rpm_url_
def multi_thread(rpm_url_list):
threads = [] # url = 'https://mirrors.ustc.e.cn/centos/7/os/x86_64/Packages/'
# rpm_url_list = get_rpm_url_list(url)
for index in range(len(rpm_url_list)): print 'rpm_url is:', rpm_url_list[index]
one_thread = threading.Thread(target=download_image, args=(rpm_url_list[index],))
threads.append(one_thread)

thread_num = 5 # set threading pool, you have put 4 threads in it
while 1:
count = min(thread_num, len(threads)) print '**********count*********', count ###25,25,...6707%25

res = [] for index in range(count):
x = threads.pop()
res.append(x) for thread_index in res:
thread_index.start() for j in res:
j.join() if not threads:
def multi_process(rpm_url_list):
# process num at the same time is 4
process = []
rpm_url_group_0 = []
rpm_url_group_1 = []
rpm_url_group_2 = []
rpm_url_group_3 = [] for index in range(len(rpm_url_list)): if index % 4 == 0:
rpm_url_group_0.append(rpm_url_list[index]) elif index % 4 == 1:
rpm_url_group_1.append(rpm_url_list[index]) elif index % 4 == 2:
rpm_url_group_2.append(rpm_url_list[index]) elif index % 4 == 3:
rpm_url_group_3.append(rpm_url_list[index])
rpm_url_groups = [rpm_url_group_0, rpm_url_group_1, rpm_url_group_2, rpm_url_group_3] for each_rpm_group in rpm_url_groups:
each_process = multiprocessing.Process(target = multi_thread, args = (each_rpm_group,))
process.append(each_process) for one_process in process:
one_process.start() for one_process in process:
one_process.join()# for each_url in rpm_url_list:# print '*****the %s rpm begin to download *******' %each_url## commands.getoutput('wget %s' %each_url)
def main():
url = 'https://mirrors.ustc.e.cn/centos/7/os/x86_64/Packages/'
url_paas = 'http://mirrors.ustc.e.cn/centos/7.3.1611/paas/x86_64/openshift-origin/'
url_paas2 ='http://mirrors.ustc.e.cn/fedora/development/26/Server/x86_64/os/Packages/u/'

start_time = time.time()
rpm_list = get_rpm_url_list(url_paas) print multi_process(rpm_list) # print multi_thread(rpm_list)
#print multi_process()
# print multi_thread(rpm_list)
# for index in range(len(rpm_list)):
# print 'rpm_url is:', rpm_list[index]
end_time = time.time() print 'the download time is:', end_time - start_timeprint main()123456789101112131415161718

代碼的功能主要是這樣的:
main()方法中調用get_rpm_url_list(base_url)方法,獲取要下載的每個rpm包的具體的url地址。其中base_url即中科大基礎的鏡像源的地址,比如:http://mirrors.ustc.e.cn/centos/7.3.1611/paas/x86_64/openshift-origin/,這個地址下有幾十個rpm包,get_rpm_url_list方法將每個rpm包的url地址拼出來並返回。
multi_process(rpm_url_list)啟動多進程方法,在該方法中,會調用多線程方法。該方法啟動4個多進程,將上面方法得到的rpm包的url地址進行分組,分成4組,然後每一個組中的rpm包再最後由不同的線程去執行。從而達到了多進程+多線程的配合使用。
代碼還有需要改進的地方,比如多進程啟動的進程個數和rpm包的url地址分組是硬編碼,這個還需要改進,畢竟,不同的機器,適合同時啟動的進程個數是不同的。

㈥ python的Wget庫函數是什麼

提取數據,尤其是從網路上提取數據,是數據科學家的主要任務之一。Wget是一個免費的實用程序,用於從Web上進行非互動式文件下載。它支持HTTP,HTTPS和FTP協議,以及通過HTTP代理進行檢索。由於它是非互動式的,即使用戶沒有登錄也可以在後台運行。因此,如果你需要下載一個網站或頁面中的所有圖片時,wget 就可以幫到你

㈦ python mac版怎麼使用

這兩天重新搞了下python的環境,發現好多地方還是容易忘記,因此有了這篇文章,以後方便查看。
一. 安裝python
mac系統其實自帶了一個python的執行執行環境,用來運行python還行,但是開發可能就不夠了,因此我們需要重新安裝python。這里有兩種方案安裝:
1.homebrew
1
brew install python

這個方案比較簡單,如果出錯的話可以給前面加sudo試試,這個安裝的python可能不是最新版.
2.從官網下載安裝
大家可以從下載安裝最新版的python,安裝比較無腦,一路按下去就OK,缺點是以後升級,卸載都得自己維護.
這兩個方法安裝的python的位置是不一樣的,大家可以用:
1
which python

來查看安裝位置.安裝完成後在終端中鍵入python來驗證安裝是否成功.
二. 安裝pip
這里好多文章中說要先安裝easy_install, 其實是不用的.
1.我們先獲取pip安裝腳本:
1
wget

如果沒有安裝wget可以去這里將所有內容復制下來,新建get-pip.py文件,將內容拷進去就OK了.
2.安裝pip
1
sudo python get-pip.py

用python執行剛才獲取的腳本,這里sudo可以選擇使用,若遇到類似這個報錯則必須加sudo:
1
2
3
4
5
6
7
8
9
Exception:

Traceback (most recent call last):...OSError: [Errno 13] Permission denied: 'XXX/pip-0.7.2-py2.7.egg/EGG-INFO/dependency_links.txt'Storing debug log for failure in /Users/bilt/.pip/pip.log

安裝成功後可以在終端中鍵入pip來檢測,如果不行重啟終端後嘗試.
3.修改pip源
在天朝,由於功夫網的原因,使用pip安裝一些模塊會特別慢甚至無法下載,因此我們需要修改pip的源到國內的一些鏡像地址,特別感謝國內無私奉獻的組織~
首先進入HOME路徑:
1
cd ~

創建.pip目錄:
1
mkdir .pip

創建pip.conf文件:
1
touch pip.conf

大家可以用自己喜歡的編輯器打開pip.conf文件,我現在使用的時v2ex的源,所以添加:
1
2
[global]index-url =

大家可以把index-url的值設置為自己實際源的地址.
至此pip源修改成功,以後使用pip安裝模塊時都會從這個源去下載安裝,大家可以自行測試一下.
三. 其他模塊安裝
1.Pillow/PIL
想用python處理圖片,自然少不了PIL這個模塊, 由於PIL長期沒有更新了, 所以有了Pillow這個模塊, 依賴於PIL, 新版的pip安裝後會自帶Pillow, 但是好像沒有zlib模塊, 所以會報錯:
1
2
3
4
5
6
7
8
9
10
11
12
File "/Library/Python/2.7/site-packages/PIL/Image.py", line 1105, in paste
im.load()

File "/Library/Python/2.7/site-packages/PIL/ImageFile.py", line 190, in load

d = Image._getdecoder(self.mode, d, a, self.decoderconfig)

File "/Library/Python/2.7/site-packages/PIL/Image.py", line 389, in _getdecoder

raise IOError("decoder %s not available" % decoder_name)

IOError: decoder zip not available

因此我們需要手動重新安裝:
1
sudo pip install -U Pillow

閱讀全文

與python實現wget相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:758
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:672
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:486
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:383
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:350
風翼app為什麼進不去了 瀏覽:779
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:151
伊克塞爾文檔怎麼進行加密 瀏覽:893
app轉賬是什麼 瀏覽:163