BeautifulSoup
首先雷绢,beautifulsoup()解析的對象可以是一段字符串难咕,或者文件句柄课梳,例如:
from bs4 import BeautifulSoup
soup = BeautifulSoup(open("index.html"))
soup = BeautifulSoup("data")
而其返回一個beautifulsoup對象soup.
如果想取得一對標簽之間的文本內容,可以使用get_text()方法,而要取得標簽內的參數(shù)值則要用get('參數(shù)名')的方法余佃,這一方法常用于取鏈接暮刃。如果我們想獲得一個父級標簽下所有子標簽間的文本信息,我們需要用到的方法是stripped_strings,這個方法還能自動剔除多余的空白內容(空格和空行)爆土,并返回一個序列椭懊。一般使用list()將這個序列轉化成列表。
soup.select()有許多種方法可以查找到想要的元素(http://beautifulsoup.readthedocs.io/zh_CN/latest/)
Requests
Requests 是一個基于 urllib庫的包雾消,requests.get()里可傳入一個url灾搏,對服務器進行一次request,同時會返回一個response對象挫望,其存儲了服務器響應的內容。
r.status_code #響應狀態(tài)碼
r.raw #返回原始響應體狂窑,也就是 urllib 的 response 對象媳板,使用 r.raw.read() 讀取
r.content #字節(jié)方式的響應體,會自動為你解碼 gzip 和 deflate 壓縮
r.text #字符串方式的響應體泉哈,會自動根據(jù)響應頭部的字符編碼進行解碼
r.headers #以字典對象存儲服務器響應頭蛉幸,但是這個字典比較特殊,字典鍵不區(qū)分大小寫丛晦,若鍵不存在則返回None
#*特殊方法*#
r.json() #Requests中內置的JSON解碼器
r.raise_for_status() #失敗請求(非200響應)拋出異常
r.encoding # r.text的編碼奕纫,可以修改
用requests爬取需要登陸驗證的頁面:
headers={
'user-agent':'',
'cookie':,
}
另外,requests的headers里i可以添加一個proxies參數(shù)來添加代理:
proxy_list={'','','',}
proxy_ip=random.choice(proxy_list)
proxies = {'http':proxy_ip}
requests.post(url,headers=headers,proxies=proxies)