requests是python的乙個http客戶端庫,跟urllib,urllib2類似,那為什麼要用requests而不用urllib2呢?官方文件中是這樣說明的:
python的標準庫urllib2提供了大部分需要的http功能,但是api太逆天了,乙個簡單的功能就需要一大堆**。我也看了下requests的文件,確實很簡單,適合我這種懶人。下面直接看文件。
看下他的強大之處:
最原始的爬蟲爬蟲可以只是傳送乙個http請求,並獲取返回的響應資料,使用requests三行就可以寫出乙個簡單的爬蟲,**如下:
importrequests
r = requests.get('
')print r.content
給原始爬蟲公升級幾個技能就可以投入使用了,我經常公升級以下幾個功能。
beautifulsoup可以將html解析為dom樹,然後獲取特定字段。關於beautifulsoup的詳細內容可以看這篇文章,這裡只舉乙個簡單的例子。
以下是途牛某遊玩頁面的部分**
class="des">
class="
address mb_5
">class="
c_999
">地 址:
class="
othmes
">
class="
t1">class="
c_999
c_f80
">4小時
可以通過..
這個特徵來獲取4小時
這個字段:
importrequests
from bs4 import
beautifulsoup as bs
url = '
'r =requests.get(url)
soup =bs(r.content)
print soup.find('
b', class_='
c_f80
').string
#輸出欄位有空格,可以通過strip()函式來過濾多餘的空格和換行
注:也可以用requests和lxml的方式抓取。
為避免遮蔽,抓取時通常需要**,使用requests的proxies引數
可以實現這個效果。接上面**:
proxies =r = requests.get(url, proxies=proxies)
如果**需要賬戶和密碼,則需這樣:
proxies =
headers =r = requests.get(url, headers=headers)
為了提高抓取速度,一般都會採用多執行緒的方式去抓取,可採用了第三方庫threadpool
的形式實現了多執行緒。在這裡我採用另外一種形式,用標準庫multiprocessing
來實現:
importrequests
from bs4 import
beautifulsoup as bs
from multiprocessing.dummy import
pool as threadpool
#url列表
urls =[ '
', '','
','',#
etc.. ]#
提取字段函式
defget_play_time(url):
r =requests.get(url)
soup =bs(r.content)
print soup.find('
b', class_='
c_f80
').string.strip()
#設定執行緒數
pool = threadpool(4)
#開啟多執行緒
results =pool.map(get_play_time, urls)
#關閉執行緒並等待結束
pool.close()
pool.join()
注:這個多執行緒的實現主要參考了這篇文章。
有時候如果所需欄位出現在js等dom樹之外,可以直接使用正則的方式獲取,有時候速度反而會更快一點。
很多**會將重點內容放在js中,增加了抓取的難度。這種可以通過selenium+phantomjs+xpath的方式抓取。有點跑題了……哈哈
23 requests安裝與使用
在介紹requests庫之前,先貼一下requests官網,當然也可以訪問requests中文 requests官網給出以下介紹 requests 唯一的乙個非轉基因的 python http 庫,人類可以安全享用。但同時也給出了警告 非專業使用其他 http 庫會導致危險的 包括 安全缺陷症 冗餘...
requests模組的簡單使用
簡單來說,requests就是乙個可以模擬傳送請求的庫。安裝方法 pip install requests幫助文件 直接呼叫requests模組的get方法就可以傳送get請求。返回值為乙個response物件 import requests url response requests.get ur...
Python之requests的安裝
在 windows 系統下,只需要輸入命令 pip install requests 即可安裝。在 linux 系統下,只需要輸入命令 sudo pip install requests 即可安裝。注 關於python第三方庫的安裝最好少使用 easy install,因為 easy install...