《python爬蟲實戰》:爬取圖檔
上篇博文講解了關于爬取糗事百科上面的段子的例子程式,這篇博文,主要的目的就是爬取任何不用登陸的網站上的圖檔。還是以糗事百科為例。
例子:爬取糗事百科上的圖檔
實作代碼如下:
#encoding=utf-8
#功能:爬取糗事百科上面的圖檔
import urllib2
import urllib
import re
#raw_input是python的一個内置函數,通過讀取控制台的輸入與使用者實作互動。
#input也可以讀取控制台的輸入與使用者實作互動,但是input和raw_input由一定的差異,
#例如:raw_input将控制台上所有的輸入均作為字元串(即使全是數字組合)來進行處理,而input對輸入有一定的要求,如果輸入的是字元串,則一定要用引号
#從控制台輸入一個url
#定義一個函數,得到内容
def getContent(content):
#利用正則來進行比對
pattern=re.compile(r'src="(.*?)" alt=')
items=re.findall(pattern,content)
count=
for item in items:
count+=#python中沒有++運算
urllib.urlretrieve(item,"%s.jpg" % count)
url=raw_input("raw_input:")
try:
user_agent="Moizlla/5.0 (Windows NT/6.1)"
headers={"User-Agent":user_agent}#請求頭
request=urllib2.Request(url,headers=headers)
response=urllib2.urlopen(request)
content=response.read()
getContent(content)#調用getContent函數進行比對
except urllib2.URLError,e:
if hasattr(e,"reason"):
print e.reason
上面唯一的難點在于比對圖檔的正規表達式,其它的代碼都比較簡單,相信有一點點爬蟲基礎都對這幾行代碼比較熟悉。
關于正規表達式時如何來的,我的經驗就是如下:
第一步:找到你想爬圖檔的網頁,并求浏覽器打開,推薦用IE
第二步:按下鍵盤F12
第三步:在html代碼中,圖檔是以什麼樣的格式出現在html代碼中的。然後根據格式提取出正規表達式即可。
根據上面的三部曲,在糗事百科的網頁上,圖檔在html代碼中的格式如下:

根據此格式,提取出正規表達式如下:
這樣,一個圖檔的正規表達式就完成了。
這裡,分享一個經驗,當我們學習别人的代碼時,正規表達式,自己一定要根據自己想爬取的網頁自己去提取,如果自己提取不了,也要根據自己的目的網頁驗證下,特别是當學習别人的代碼提取相同的網頁時不能成功時,越應該如此。
程式下載下傳點選這裡:https://github.com/wojiushimogui/get_tieba