python網絡爬蟲學習筆記(1)
本文實例為大家分享了python網絡爬蟲的筆記,供大家參考,具體內容如下
(一) 三種網頁抓取方法
1、 正則表達式:
模塊使用C語言編寫,速度快,但是很脆弱,可能網頁更新后就不能用了。
2、Beautiful Soup
模塊使用Python編寫,速度慢。
安裝:
pip install beautifulsoup4
3、 Lxml
模塊使用C語言編寫,即快速又健壯,通常應該是最好的選擇。
(二) Lxml安裝
pip install lxml
如果使用lxml的css選擇器,還要安裝下面的模塊
pip install cssselect
(三) 使用lxml示例
import urllib.request as re
import lxml.html
#下載網頁并返回HTML
def download(url,user_agent='Socrates',num=2):
print('下載:'+url)
#設置用戶代理
headers = {'user_agent':user_agent}
request = re.Request(url,headers=headers)
try:
#下載網頁
html = re.urlopen(request).read()
except re.URLError as e:
print('下載失敗'+e.reason)
html=None
if num>0:
#遇到5XX錯誤時,遞歸調用自身重試下載,最多重復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
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
python?Pandas之DataFrame索引及選取數(shù)據(jù)
這篇文章主要介紹了python?Pandas之DataFrame索引及選取數(shù)據(jù),文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的朋友可以參考一下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ū)域內單元格的最大值
這篇文章主要介紹基于Python語言,基于Excel表格文件內某一列的數(shù)據(jù),計算這一列數(shù)據(jù)在每一個指定數(shù)量的行的范圍內(例如每一個4行的范圍內)的區(qū)間最大值的方法,需要的朋友可以參考下2023-08-08
python?Pandas庫read_excel()參數(shù)實例詳解
人們經常用pandas處理表格型數(shù)據(jù),時常需要讀入excel表格數(shù)據(jù),下面這篇文章主要給大家介紹了關于python?Pandas庫read_excel()參數(shù)的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-07-07
Python?中的lambda匿名函數(shù)和三元運算符
這篇文章主要介紹了Python?中的lambda匿名函數(shù)和三元運算符,使用關鍵字???lambda???定義,所以匿名函數(shù)又稱之為lambda表達式,下面文章更多相關內容需要的小伙伴可以參考一下2022-04-04

