1. 程式人生 > 實用技巧 >Python爬蟲中最重要、最常見、一定要熟練掌握的庫

Python爬蟲中最重要、最常見、一定要熟練掌握的庫

本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,如有問題請及時聯絡我們以作處理。

以下文章來源於Python綠色通道 ,作者龍哥帶你飛

Python爬蟲、資料分析、網站開發等案例教程視訊免費線上觀看

https://space.bilibili.com/523606542

開始正文

Requests庫是Python爬蟲中最最最最最最重要與常見的庫,一定要熟練掌握它.

下面我們來認識這個庫

Requests

requests是Python最為常用的http請求庫,也是極其簡單的.使用的時候,首先需要對requests進行安裝,直接使用Pycharm進行一鍵安裝。

1.響應與編碼

import requests
url = 'http://www.baidu.com'
r = requests.get(url)
print type(r)
print r.status_code
print r.encoding
#print r.content
print r.cookies


得到:
<class 'requests.models.Response'>
200
ISO-8859-1
<RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>

2.Get請求方式

values = {'user':'aaa','id':'123'}
url = 'http://www.baidu.com'
r = requests.get(url,values)
print r.url

得到:http://www.baidu.com/?user=aaa&id=123

3.Post請求方式

values = {'user':'aaa','id':'123'}
url = 'http://www.baidu.com'
r = requests.post(url,values)
print r.url
#print r.text

得到:
http://www.baidu.com/

4.請求頭headers處理

user_agent = {'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4295.400 QQBrowser/9.7.12661.400'}
header = {'User-Agent':user_agent}
url = 'http://www.baidu.com/'
r = requests.get(url,headers=header)
print r.content

注意處理請求的headers
很多時候我們伺服器會檢驗請求是否來自於瀏覽器,所以我們需要在請求的頭部偽裝成瀏覽器來請求伺服器.一般做請求的時候,最好都要偽裝成瀏覽器,防止出現拒絕訪問等錯誤,這也是一種反爬蟲的一種策略

特別說明,以後無論我們做什麼請求,一定要帶上headers,千萬不要偷懶省事,把這裡當成一條交通規則來理解,闖紅燈不一定會發生危險但不安全,為了省事,我們遵循紅燈停綠燈行就夠了,做網路爬蟲請求也一樣,必須把這個headers加上,以防出錯.

user_agent = {'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4295.400 QQBrowser/9.7.12661.400'}
header = {'User-Agent':user_agent}
url = 'http://www.qq.com/'
request = urllib2.Request(url,headers=header)
response = urllib2.urlopen(request)
print response.read().decode('gbk')#這裡注意一下需要對讀取的網頁內容進行轉碼,先要檢視一下網頁的chatset是什麼格式.

在瀏覽器上開啟www.qq.com然後按F12,檢視User-Agent:

User-Agent : 有些伺服器或 Proxy 會通過該值來判斷是否是瀏覽器發出的請求
Content-Type : 在使用 REST 介面時,伺服器會檢查該值,用來確定 HTTP Body 中的內容該怎樣解析。
application/xml :在 XML RPC,如 RESTful/SOAP 呼叫時使用
application/json :在 JSON RPC 呼叫時使用
application/x-www-form-urlencoded :瀏覽器提交 Web 表單時使用
在使用伺服器提供的 RESTful 或 SOAP 服務時, Content-Type 設定錯誤會導致伺服器拒絕服務

5.響應碼code與響應頭headers處理

url = 'http://www.baidu.com'
r = requests.get(url)

if r.status_code == requests.codes.ok:
  print r.status_code
  print r.headers
  print r.headers.get('content-type')#推薦用這種get方式獲取頭部欄位
else:
  r.raise_for_status()

得到:
200
{'Content-Encoding': 'gzip', 'Transfer-Encoding': 'chunked', 'Set-Cookie': 'BDORZ=27315; max-age=86400; domain=.baidu.com; path=/', 'Server': 'bfe/1.0.8.18', 'Last-Modified': 'Mon, 23 Jan 2017 13:27:57 GMT', 'Connection': 'Keep-Alive', 'Pragma': 'no-cache', 'Cache-Control': 'private, no-cache, no-store, proxy-revalidate, no-transform', 'Date': 'Wed, 17 Jan 2018 07:21:21 GMT', 'Content-Type': 'text/html'}
text/html

6.cookie處理

url = 'https://www.zhihu.com/'
r = requests.get(url)
print r.cookies
print r.cookies.keys()

得到:
<RequestsCookieJar[<Cookie aliyungf_tc=AQAAACYMglZy2QsAEnaG2yYR0vrtlxfz for www.zhihu.com/>]>
['aliyungf_tc']

7重定向與歷史訊息

處理重定向只是需要設定一下allow_redirects欄位即可,將allow_redirectsy設定為True則是允許重定向的,設定為False則禁止重定向的

r = requests.get(url,allow_redirects = True)
print r.url
print r.status_code
print r.history

得到:
http://www.baidu.com/
200
[]

8.超時設定

超時選項是通過引數timeout來設定的
python url = 'http://www.baidu.com' r = requests.get(url,timeout = 2)

9.代理設定

proxis = {
  'http':'http://www.baidu.com',
  'http':'http://www.qq.com',
  'http':'http://www.sohu.com',

}

url = 'http://www.baidu.com'
r = requests.get(url,proxies = proxis)

如果你覺得文章還不錯,請大家點贊分享下。你的肯定是我最大的鼓勵和支援。