requests庫的使用

2021-09-28 17:01:12 字數 4017 閱讀 7560

requests 功能和 urllib一樣

將cookies 和 http變成了引數

re = requests.get(

'')re = requests.post(

'')

print

(re.text)

# 會亂碼,requests轉馬時基於http頭部推測轉碼

print

(re.encoding)

# 一般都轉為iso-8859-1

手動轉碼

re.encoding =

'utf-8'

print

(re.text)

print

(re.json())

print

(re.content.decode(

))

def

request

(self, method, url,

params=

none

, data=

none

, headers=

none

, cookies=

none

, files=

none

, auth=

none

, timeout=

none

, allow_redirects=

true

, proxies=

none

, hooks=

none

, stream=

none

, verify=

none

, cert=

none

, json=

none

):

'''表單中,多個元素使用同一key的時候,可用元組傳參data = (('key1', 'value1'), ('key1', 'value2'))'''

data =((

'key1'

,'value1'),

('key1'

,'value2'))

print

(requests.post(

'', data=data)

.headers)

print

(requests.post(

'', data=data)

.cookies)

引數:allow_redirects=false 取消自動重定向

"""重定向"""

r = requests.get(

'', allow_redirects=

false

)# 禁止重定向

print

(r.headers)

print

(r.url)

print

(r.history)

# 歷史記錄,從哪個**跳轉過來的

url =

''r = requests.get(url, stream=

true

)for chunk in r.iter_content(chunk_size=

1024):

print

(chunk)

"""

session 會話物件,所有會話物件發出的請求 會自動保持狀態

同一主機傳送多個請求,會重用tcp鏈結

使用socket是會先connect鏈結網頁也就是建立tcp鏈結,因此session重用會快很多

"""import time

import urllib.request

s = requests.session(

)# session所有api和requests相同

start_time = time.time(

)for i in

range(50

):# r = urllib.request.urlopen('')

# r = requests.get('')

r = s.get(

'')# 明顯快於前兩種,因為會重用tcp鏈結

print

('耗時{}s'

.format

(time.time(

)-start_time)

)

"""手動新增cookies"""

以蔡xx的微博為例

headers =

r = requests.get(

'', headers=headers)

r.encoding =

'utf-8'

print

(r.text)

引數

hostname to the url of the proxy."""

加**的方式

proxy =

print

(requests.get(

'', proxies=

))

"""

需求1.請求首頁位址,匹配每乙個帖子的詳情頁url

2.分頁請求

"""import requests

import re

import threading

defparse

(word, pn)

: url =

''.format

(word, pn)

r = requests.get(url)

.content.decode(

)# print(r)

article_urls = re.findall(r', r, re.s)

# print(article_urls)

return article_urls

defparse_detail

(article_urls)

:for article_url in article_urls:

article_req = requests.get(

''+article_url[0]

).text

# print(article_req)

author = re.findall(r'author: "(.*?)"'

, article_req, re.s)

# print(author)

create_time = re.findall(r'>1樓

(.*?)'

, article_req, re.s)

# print(create_time)

if author and create_time:

print(.

format

(author, article_url[1]

, create_time)

)if __name__ ==

'__main__'

: word =

input

("請輸入貼吧名字:"

) t_list =

for pn in

range(0

,201,50

):# 獲取詳情頁

article = parse(word, pn)

# 對每個詳情頁請求

t = threading.thread(target=parse_detail, args=

(article,))

# 不要立即啟動執行緒,先追加到乙個列表,之後一起啟動

# t.start()

# 啟動

for t in t_list:

t.start(

)# 等待所有執行緒結束

for t in t_list:

t.join(

)

requests庫的使用

import requests 引用模組 帶引數請求 get引數例項 requests.get params 或url payload accept encoding gzip accept language zh cn,zh q 0.8 referer res1 requests.get url,...

requests庫的使用

1.requests庫概述 requests庫是乙個簡潔且簡單處理http請求的第三方庫,它的最大優點是程式編寫過程更接近正常url訪問過程。這個庫建立在python語言的urlib3庫的基礎上,類似這種在其他函式庫之上再封裝功能,提供更友好函式的方式在python語言中十分常見。在python生態...

requests庫的基本使用

import requests response requests.get 檢視響應內容,返回的是已經解碼的內容 response.text 伺服器返回的資料,已解碼。解碼型別 根據http頭部對響應的編碼做出有根據的推測,推測的文字編碼 print type response.text print...