python網(wǎng)絡(luò)爬蟲學習筆記(1)
本文實例為大家分享了python網(wǎng)絡(luò)爬蟲的筆記,供大家參考,具體內(nèi)容如下
(一) 三種網(wǎng)頁抓取方法
1、 正則表達式:
模塊使用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 re
import lxml.html
#下載網(wǎng)頁并返回HTML
def 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 html
html = 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,將圖片保存在當前目錄下
for i in img:
re.urlretrieve(i,'%s.jpg'%x)
x += 1
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python 讀取excel并轉(zhuǎn)換為字典的方法
文章介紹了兩種方法使用Python讀取Excel文件并將其轉(zhuǎn)換為字典,方法一使用xlrd庫,方法二使用自定義的xToolkit庫,感興趣的朋友一起看看吧2025-03-03
python?Pandas之DataFrame索引及選取數(shù)據(jù)
這篇文章主要介紹了python?Pandas之DataFrame索引及選取數(shù)據(jù),文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下2022-07-07
pandas數(shù)據(jù)探索之合并數(shù)據(jù)示例詳解
這篇文章主要為大家介紹了pandas數(shù)據(jù)探索之合并數(shù)據(jù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10
python linecache讀取行更新的實現(xiàn)
本文主要介紹了python linecache讀取行更新的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-03-03
Python實現(xiàn)求取表格文件某個區(qū)域內(nèi)單元格的最大值
這篇文章主要介紹基于Python語言,基于Excel表格文件內(nèi)某一列的數(shù)據(jù),計算這一列數(shù)據(jù)在每一個指定數(shù)量的行的范圍內(nèi)(例如每一個4行的范圍內(nèi))的區(qū)間最大值的方法,需要的朋友可以參考下2023-08-08
python?Pandas庫read_excel()參數(shù)實例詳解
人們經(jīng)常用pandas處理表格型數(shù)據(jù),時常需要讀入excel表格數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于python?Pandas庫read_excel()參數(shù)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-07-07
Python?中的lambda匿名函數(shù)和三元運算符
這篇文章主要介紹了Python?中的lambda匿名函數(shù)和三元運算符,使用關(guān)鍵字???lambda???定義,所以匿名函數(shù)又稱之為lambda表達式,下面文章更多相關(guān)內(nèi)容需要的小伙伴可以參考一下2022-04-04

