本文實例為大家分享了python網(wǎng)絡(luò)爬蟲的筆記,供大家參考,具體內(nèi)容如下
(一) 三種網(wǎng)頁抓取方法
1、 正則表達(dá)式:
模塊使用C語言編寫,速度快,但是很脆弱,可能網(wǎng)頁更新后就不能用了。
2、Beautiful Soup
模塊使用Python編寫,速度慢。
安裝:
pip install beautifulsoup4
3、 Lxml
模塊使用C語言編寫,即快速又健壯,通常應(yīng)該是最好的選擇。
(二) Lxml安裝
pip install lxml
如果使用lxml的css選擇器,還要安裝下面的模塊
pip install cssselect
(三) 使用lxml示例
import urllib.request as reimport lxml.html#下載網(wǎng)頁并返回HTMLdef download(url,user_agent='Socrates',num=2): print('下載:'+url) #設(shè)置用戶代理 headers = {'user_agent':user_agent} request = re.Request(url,headers=headers) try: #下載網(wǎng)頁 html = re.urlopen(request).read() except re.URLError as e: print('下載失敗'+e.reason) html=None if num>0: #遇到5XX錯誤時,遞歸調(diào)用自身重試下載,最多重復(fù)2次 if hasattr(e,'code') and 500<=e.code<600: return download(url,num-1) return htmlhtml = download('https://tieba.baidu.com/p/5475267611')#將HTML解析為統(tǒng)一的格式tree = lxml.html.fromstring(html)# img = tree.cssselect('img.BDE_Image')#通過lxml的xpath獲取src屬性的值,返回一個列表img = tree.xpath('//img[@class="BDE_Image"]/@src')x= 0#迭代列表img,將圖片保存在當(dāng)前目錄下for i in img: re.urlretrieve(i,'%s.jpg'%x) x += 1以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林站長站。
新聞熱點
疑難解答
圖片精選