使用Requests庫簡單的爬取一個頁面內容


什么是Requests?

Requests是用python語言基於urllib編寫的,采用的是Apache2 Licensed開源協議的HTTP庫。與urllib相比,Requests更加方便,可以節約我們大量的工作,建議爬蟲使用Requests庫。

requests請求方式

requests提供的請求各個請求方式:
import requests
requests.get(url)        # 發送一個 HTTP get請求:
requests.post(url)       # 發送一個 HTTP post請求: 
requests.put(url)        # 發送一個 HTTP put請求:
requests.delete(url)    # 發送一個 HTTP delete請求:
requests.head(url)        # 發送一個 HTTP head請求:
requests.options(url)    # 發送一個 HTTP options請求:

主要最常用的就是post和get請求

get請求

get請求核心代碼是requests.get(url),具體例子如下:

import requests
url = 'http://baidu.com'
response = requests.get(url)
print("response:", response)

運行輸出結果為:

這里:<>表示這是一個對象,也就是我們這里獲取的是一個response的對象,200表示狀態碼。

post請求

post請求核心代碼是requests.post(url,data={請求體的字典}),具體例子(百度翻譯)如下:

import requests
url = 'https://fanyi.baidu.com'
data = {'from': 'zh',
        'to': 'en',
        'query': '人生苦短,我用python'
        }
response = requests.post(url, data=data)
print("response", response)

data部分的參數,取自於頁面NetWork→Headers→Form Data。打印出來的結果是:<Response [200]>。

 

response方法

獲取網頁的解碼字符串

通過上述例子我們可以看到,不管是get請求還是post請求,我們得到的返回都是一個Response[200]的對象,但是我們想要得到的,應該是與網頁response下一樣的字符串對象,這時就需要用到response的方法了。

  • response.text。獲取網頁的HTML字符串,該方式往往會出現亂碼,出現亂碼使用response.encoding='utf-8
    1 import requests
    2 url = 'http://baidu.com'
    3 response = requests.get(url)
    4 response.encoding = 'utf-8'
    5 print(response.text)

     

  • response.content.decode()。把相應的二進制字節流轉化為str類型。

    1 import requests
    2 url = 'http://baidu.com'
    3 response = requests.get(url)
    4 print(response.content.decode('gbk'))

     

在這里我總結了一下四種獲取網頁源碼的四種方式,通過這四種方式,一定可以獲取到網頁正確解碼之后的字符串:

  • response.content.decode()
  • response.content.decode('gbk')
  • response.text
  • response.encoding="utf-8"
獲取其他屬性
1 import requests
2 response = requests.get("http://www.baidu.com") 
3 print(type(response.requests.headers),response.requests.headers) #獲取請求頭
4 print(type(response.headers),response.headers) #獲取響應頭
5 print(type(response.cookies),response.cookies)#獲取響應cookie
6 print(type(response.url),response.url) #獲取響應url
7 print(type(response.requests.url),response.requests.url) #獲取請求url

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM