當前位置:首頁 » 編程語言 » pythonrequests跳轉

pythonrequests跳轉

發布時間: 2022-12-06 07:35:08

A. 如何用python requests 爬取網頁所有文字

您可以用requests庫的get方法,以請求的網址為參數,獲取網頁所有html代碼,再訪問結果是text屬性即可。

B. Python爬蟲筆記(二)requests模塊get,post,代理

  import requests

  base_url = 'https://www..com'

  response = requests.get(base_url)

        url=請求url,

        headers =請求頭字典,

        params = 請求參數字典。

        timeout = 超時時長,

    )---->response對象

  伺服器響應包含:狀態行(協議,狀態碼)、響應頭,空行,響應正文

    字元串格式:response.text

    bytes類型:response.content

        response.headers['cookie']

    response.text獲取到的字元串類型的響應正文,

    其實是通過下面的步驟獲取的:

        response.text = response.content.decode(response.encoding)

    產生的原因:編碼和解碼的編碼格式不一致造成的。

        str.encode('編碼')---將字元串按指定編碼解碼成bytes類型

        bytes.decode('編碼')---將bytes類型按指定編碼編碼成字元串。

    a、response.content.decode('頁面正確的編碼格式')

        <meta http-equiv="content-type" content="text/html;charset=utf-8">

    b、找到正確的編碼,設置到response.encoding中

        response.encoding = 正確的編碼

        response.text--->正確的頁面內容。

  a、沒有請求參數的情況下,只需要確定url和headers字典。

  b、get請求是有請求參數。

    在chrome瀏覽器中,下面找query_string_params,

    將裡面的參數封裝到params字典中。

  c、分頁主要是查看每頁中,請求參數頁碼欄位的變化,

  找到變化規律,用for循環就可以做到分頁。

  requests.post(

    url=請求url,

    headers = 請求頭字典,

    data=請求數據字典

    timeout=超時時長

  )---response對象

  post請求一般返回數據都是json數據。

(1)response.json()--->json字元串所對應的python的list或者dict

(2)用 json 模塊。

    json.loads(json_str)---->json_data(python的list或者dict)

    json.mps(json_data)--->json_str

  post請求能否成功,關鍵看**請求參數**。

  如何查找是哪個請求參數在影響數據獲取?

  --->通過對比,找到變化的參數。

  變化參數如何找到參數的生成方式,就是解決這個ajax請求數據獲取的途徑。

**尋找的辦法**有以下幾種:

    (1)寫死在頁面。

    (2)寫在js中。

    (3)請求參數是在之前的一條ajax請求的數據裡面提前獲取好的。

  代理形象的說,他是網路信息中轉站。

  實際上就是在本機和伺服器之間架了一座橋。

  a、突破自身ip訪問現實,可以訪問一些平時訪問不到網站。

  b、訪問一些單位或者團體的資源。

  c、提高訪問速度。代理的伺服器主要作用就是中轉,

  所以一般代理服務裡面都是用內存來進行數據存儲的。

  d、隱藏ip。

    ftp代理伺服器---21,2121

    HTTP代理伺服器---80,8080

    SSL/TLS代理:主要用訪問加密網站。埠:443

    telnet代理 :主要用telnet遠程式控制制,埠一般為23

    高度匿名代理:數據包會原封不動轉化,在服務段看來,就好像一個普通用戶在訪問,做到完全隱藏ip。

    普通匿名代理:數據包會做一些改動,伺服器有可能找到原ip。

    透明代理:不但改動數據,還會告訴服務,是誰訪問的。

    間諜代理:指組織或者個人用於記錄用戶傳輸數據,然後進行研究,監控等目的的代理。   

  proxies = {

    '代理伺服器的類型':'代理ip'

  }

  response = requests.get(proxies = proxies)

  代理伺服器的類型:http,https,ftp

  代理ip:http://ip:port

C. python requests庫中的post詳解

一、post請求及響應詳解

返回結果:

大家看,其實通過post發送請求很簡單

下面再講講返回信息的具體內容

大家看,其實有很多的返回值參數,其實我們實際中能用到的並不多,我下邊一一列舉出來了

response.json():返回信息的格式是json,應為我們請求的時候是json格式,返回的也是一個json,如果返回報錯,應該是開發的介面出錯了

response.text:如果response.json,可以使用text調試一下,看看具體的返回內容是什麼,這里看到的都是字元串了

response.status_code:返回的http狀態碼,200是成功,404是未找到介面路徑,500是伺服器錯誤,等等

response.url:返回請求時的url地址

response.headers:返回伺服器給你的響應header

response.cookies:返回伺服器給你的cookies,這是一個多麼好的獲取cookie的方法啊,

response.content:同response.text是一樣的

二、post請求中的其他參數

復制

import requests

res = requests.post(url="url",data="body",timeout=30,verfiy=False)

print(res.json())

url:請求的全路徑地址,一定是要完整的路徑哦

data:請求的內容,如果是json的格式,最好使用json.mps,反序列化一下,避免格式錯誤,如果是其他格式,就都是字元串了

timeout:設置超時時間,這樣我們在自動化測試和爬蟲的時候,當達到了設置的超時時間,我們的程序就退出不會一直等待了,可以做其他操作了

verfiy:如果請求的介面是https協議,這個參數就很好用了,如果設置該參數為True,那麼我們的腳本就是要配置CA證書,建議參數值為False,好用又簡單

好了,post的請求詳解就這些了,歡迎大家點贊留言,我會給大家解答疑問的

D. 利用python的requests庫如何獲取post後伺服器返回的headers信息

1、在用python的requests庫時利用post模擬上傳數據網站會跳轉到另外一個網站在做頁面分析時發現。

2、可從伺服器返回的響應標頭中找到該url請問如何獲得post後伺服器返回的headers信息。

E. post python requests 怎樣處理302跳轉

requests默認行為是追蹤301/302重定向,已經跳轉到了最終的URL,自然沒有Location,看requests的手冊,作者寫了怎麼拿到這個跳轉記錄

F. python requests 常用方法

requests 繼承了urllib2的所有特性,比urllib簡潔高效
requests所有功能都能通過"requests/api.py"中的方法訪問

1、安裝:
pip install requests

2、get請求:
封裝鏈接中的參數,請求時用params參數進行傳遞
url = " http://www..com "
resp = requests.get(url,params=,headers=)

3、post請求:
發送的數據必須放在字典中,通過data參數進行傳遞
url = " http://www..com "
resp = requests.post(url,data=,headers=)

4、查看響應內容:
print (resp.text ) # resp.text 返回的是Unicode格式的數據
print(resp.json()) # res.json() 返回的是json格式的數據
print(resp.content) # resp.content返回的位元組類型數據
print (resp.url) # 查看完整url地址
print (resp.encoding) # 查看響應頭部字元編碼
print(resp.status_code) # 查看響應碼
print(resp.cookies) # 查看返回的cookies
print(resp.r.elapsed) #響應速度,從發送請求到響應到達所需要的時間

5、Cookies
import requests
url = " http://www..com "
resp = requests.get(url)
cookiejar = resp.cookies # 返回cookies對象
cookiedic = requests.utils.dict_from_cookiejar(cookiejar) # 將cookies轉為字典

6、Sission
說明
1、發送請求前先創建一個session會話,將請求到的cookies存入session中
2、程序的請求要一直使用session.get/post,以保證cookies在程序中的傳遞
3、程序的請求如果使用requests.get/post需要在參數中增加headers{"cookie:":"****"},否則請求會報錯,因為requests.get/post每次執行都會重新開啟一個新的請求,丟失已獲取的cookies
例子:登錄17小說網拿到書架數據
import requests
session = requests.session() # 創建會話(session),將cookie存入session中
data = {
"loginName": "1 7",
"password": "1
5"
}
url = " https://passport.17k.com/ck/user/login "
resp1 = session.post(url,data=data) # 登錄,獲取cookies

resp2 = session.get(" https://user.17k.com/ck/author/shelf?page=1&appKey=2406394919 ")
print(resp2.json())

7、防盜鏈處理
防盜鏈,本質上是溯源,即本次請求的上一次請求,請求時將referer地址加上即可
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36",
"Referer":" https://www.pearvideo.com/video_1734919 " # 防盜鏈:溯源,確認當前請求的上一級
}

G. python3.5 urllib.request 怎麼禁止301,302跳轉

Python code?

class SmartRedirectHandler(urllib2.HTTPRedirectHandler): 1
def http_error_301(self, req, fp, code, msg, headers):
result = urllib2.HTTPRedirectHandler.http_error_301( 2
self, req, fp, code, msg, headers)
result.status = code 3
return result

def http_error_302(self, req, fp, code, msg, headers): 4
result = urllib2.HTTPRedirectHandler.http_error_302(
self, req, fp, code, msg, headers)
result.status = code
return result

H. python requests庫如何處理302重定向

你的意思是希望requests報告302?

r = requests.get(url, allow_redirects=False)

r.status_code

r.headers['Location']

熱點內容
api伺服器搭建api 發布:2023-01-31 12:37:26 瀏覽:135
key伺服器ip 發布:2023-01-31 12:37:24 瀏覽:193
mysql資料庫密碼修改 發布:2023-01-31 12:36:05 瀏覽:443
訪問量統計插件 發布:2023-01-31 12:29:20 瀏覽:206
內存中的緩存 發布:2023-01-31 12:29:08 瀏覽:113
易語言判斷是否是文件夾 發布:2023-01-31 12:28:24 瀏覽:64
c語言while跳出 發布:2023-01-31 12:14:09 瀏覽:947
外語加編程 發布:2023-01-31 12:14:07 瀏覽:150
cl手動編譯 發布:2023-01-31 12:09:45 瀏覽:277
中匯編譯機 發布:2023-01-31 12:02:27 瀏覽:871