欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python爬蟲(chóng)headers設(shè)置后無(wú)效的解決方法

 更新時(shí)間:2017年10月21日 15:13:22   作者:返回主頁(yè) Jacck  
這篇文章主要為大家詳細(xì)介紹了python爬蟲(chóng)headers設(shè)置后無(wú)效的解決方案,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

此次遇到的是一個(gè)函數(shù)使用不熟練造成的問(wèn)題,但有了分析工具后可以很快定位到問(wèn)題(此處推薦一個(gè)非常棒的抓包工具fiddler) 

正文如下:

在爬取某個(gè)app數(shù)據(jù)時(shí)(app上的數(shù)據(jù)都是由http請(qǐng)求的),用Fidder分析了請(qǐng)求信息,并把python的request header信息寫(xiě)在程序中進(jìn)行請(qǐng)求數(shù)據(jù)

代碼如下

import requests
url = 'http://xxx?startDate=2017-10-19&endDate=2017-10-19&pageIndex=1&limit=50&sort=datetime&order=desc'

headers={
 "Host":"xxx.com",
 "Connection": "keep-alive",
 "Accept": "application/json, text/javascript, */*; q=0.01",
 "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.59 Safari/537.36",
 "X-Requested-With": "XMLHttpRequest",
 "Referer": "http://app.jg.eastmoney.com/html_Report/index.html",
 "Accept-Encoding": "gzip,deflate",
 "Accept-Language": "en-us,en",
 "Cookie":"xxx"
}
r = requests.get(url,headers)
print (r.text)

請(qǐng)求成功但是,返回的是

{"Id":"6202c187-2fad-46e8-b4c6-b72ac8de0142","ReturnMsg":"加載失??!"}

就是被發(fā)現(xiàn)不是正常請(qǐng)求被攔截了

然后我去Fidder中看剛才python發(fā)送請(qǐng)求的記錄 #蓋掉的兩個(gè)部分分別是Host和URL。

然后查看請(qǐng)求詳細(xì)信息的時(shí)候,請(qǐng)求頭并沒(méi)有加載進(jìn)去,User-Agent就寫(xiě)著python-requests !   #請(qǐng)求頭里的UA信息是java,python程序,有點(diǎn)反爬蟲(chóng)意識(shí)的網(wǎng)站、app都會(huì)攔截掉

Header詳細(xì)信息如下

GET http://xxx?istartDate=2017-10-19&endDate=2017-10-19&pageIndex=1&limit=50&sort=datetime&order=desc
  &Host=xxx.com
  &Connection=keep-alive
  &Accept=application%2Fjson%2C+text%2Fjavascript%2C+%2A%2F%2A%3B+q%3D0.01
  &User-Agent=Mozilla%2F5.0+%28Windows+NT+6.1%3B+WOW64%29+AppleWebKit%2F537.36+%28KHTML%2C+like+Gecko%29+Chrome%2F29.0.1547.59+Safari%2F537.36
  &X-Requested-With=XMLHttpRequest
  &Referer=xxx
  &Accept-Encoding=gzip%2Cdeflate
  &Accept-Language=en-us%2Cen
  &Cookie=xxx
HTTP/1.1


Host: xxx.com
User-Agent: python-requests/2.18.4
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive


HTTP/1.1 200 OK
Server: nginx/1.2.2
Date: Sat, 21 Oct 2017 06:07:21 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 75
Connection: keep-alive
Cache-Control: private
X-AspNetMvc-Version: 5.2
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET

一開(kāi)始還沒(méi)發(fā)現(xiàn),等我把請(qǐng)求的URL信息全部讀完,才發(fā)現(xiàn)程序把我的請(qǐng)求頭信息當(dāng)做參數(shù)放到了URL里

那就是我請(qǐng)求的時(shí)候request函數(shù)Header信息參數(shù)用錯(cuò)了

又重新看了一下Requests庫(kù)的Headers參數(shù)使用方法,發(fā)現(xiàn)有一行代碼寫(xiě)錯(cuò)了,在使用request.get()方法時(shí)要把參數(shù) “headers =“寫(xiě)出來(lái) 

更改如下:

import requests
url = 'http://xxx?startDate=2017-10-19&endDate=2017-10-19&pageIndex=1&limit=50&sort=datetime&order=desc'

headers={
 "Host":"xxx.com",
 "Connection": "keep-alive",
 "Accept": "application/json, text/javascript, */*; q=0.01",
 "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.59 Safari/537.36",
 "X-Requested-With": "XMLHttpRequest",
 "Referer": "http://app.jg.eastmoney.com/html_Report/index.html",
 "Accept-Encoding": "gzip,deflate",
 "Accept-Language": "en-us,en",
 "Cookie":"xxx"
}
r = requests.get(url,headers=headers)

然后去查看Fiddler中的請(qǐng)求。

此次python中的請(qǐng)求頭已經(jīng)正常了,請(qǐng)求詳細(xì)信息如下

GET http://xxx?startDate=2017-10-19&endDate=2017-10-19&pageIndex=1&limit=50&sort=datetime&order=desc HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.59 Safari/537.36
Accept-Encoding: gzip,deflate
Accept: application/json, text/javascript, */*; q=0.01
Connection: keep-alive
Host: xxx.com
X-Requested-With: XMLHttpRequest
Referer: http://xxx
Accept-Language: en-us,en
Cookie: xxx


HTTP/1.1 200 OK
Server: nginx/1.2.2
Date: Sat, 21 Oct 2017 06:42:21 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 75
Connection: keep-alive
Cache-Control: private
X-AspNetMvc-Version: 5.2
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET

然后又用python程序請(qǐng)求了一次,結(jié)果請(qǐng)求成功,返回的還是

{"Id":"6202c187-2fad-46e8-b4c6-b72ac8de0142","ReturnMsg":"加載失敗!"} 

因?yàn)橐话鉩ookie都會(huì)在短時(shí)間內(nèi)過(guò)期,所以更新了cookie,然后請(qǐng)求成功

需要注意的是用程序爬蟲(chóng)一定要把Header設(shè)置好,這個(gè)app如果反爬的時(shí)候封ip的話可能就麻煩了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python基礎(chǔ)之logging模塊知識(shí)總結(jié)

    Python基礎(chǔ)之logging模塊知識(shí)總結(jié)

    用Python寫(xiě)代碼的時(shí)候,在想看的地方寫(xiě)個(gè)print xx 就能在控制臺(tái)上顯示打印信息,這樣子就能知道它是什么了,但是當(dāng)我需要看大量的地方或者在一個(gè)文件中查看的時(shí)候,這時(shí)候print就不大方便了,所以Python引入了logging模塊來(lái)記錄我想要的信息,需要的朋友可以參考下
    2021-05-05
  • Python字符串處理函數(shù)簡(jiǎn)明總結(jié)

    Python字符串處理函數(shù)簡(jiǎn)明總結(jié)

    這篇文章主要介紹了Python字符串處理函數(shù)簡(jiǎn)明總結(jié),本文總結(jié)了一些常用的字符串處理函數(shù),需要的朋友可以參考下
    2015-04-04
  • python中Django文件上傳方法詳解

    python中Django文件上傳方法詳解

    在本篇文章里小編給大家整理了一篇關(guān)于python中Django文件上傳方法,有興趣的朋友們可以學(xué)習(xí)下。
    2020-08-08
  • 如何將DataFrame數(shù)據(jù)寫(xiě)入csv文件及讀取

    如何將DataFrame數(shù)據(jù)寫(xiě)入csv文件及讀取

    在Python中進(jìn)行數(shù)據(jù)處理時(shí),經(jīng)常會(huì)用到CSV文件的讀寫(xiě)操作,當(dāng)需要將list數(shù)據(jù)保存到CSV文件時(shí),可以使用內(nèi)置的csv模塊,若data是一個(gè)list,saveData函數(shù)能夠?qū)ist中每個(gè)元素存儲(chǔ)在CSV文件的一行,但需要注意的是,默認(rèn)情況下讀取出的CSV數(shù)據(jù)類型為str
    2024-09-09
  • 利用Django框架中select_related和prefetch_related函數(shù)對(duì)數(shù)據(jù)庫(kù)查詢優(yōu)化

    利用Django框架中select_related和prefetch_related函數(shù)對(duì)數(shù)據(jù)庫(kù)查詢優(yōu)化

    這篇文章主要介紹了利用Python的Django框架中select_related和prefetch_related函數(shù)對(duì)數(shù)據(jù)庫(kù)查詢的優(yōu)化的一個(gè)實(shí)踐例子,展示如何在實(shí)際中利用這兩個(gè)函數(shù)減少對(duì)數(shù)據(jù)庫(kù)的查詢次數(shù),需要的朋友可以參考下
    2015-04-04
  • MATLAB 全景圖切割及盒圖顯示的實(shí)現(xiàn)步驟

    MATLAB 全景圖切割及盒圖顯示的實(shí)現(xiàn)步驟

    本文給大家分兩部分介紹,第一部分通過(guò)圖文的形式給大家介紹了全景圖切割的代碼,第二部分給大家介紹了盒圖展示效果的實(shí)現(xiàn)代碼,對(duì)MATLAB 全景圖切割相關(guān)知識(shí)感興趣的朋友,跟隨小編一起看看吧
    2021-05-05
  • 利用Python自動(dòng)化操作AutoCAD的實(shí)現(xiàn)

    利用Python自動(dòng)化操作AutoCAD的實(shí)現(xiàn)

    這篇文章主要介紹了利用Python自動(dòng)化操作AutoCAD的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Python使用turtle和matplotlib繪制圓和愛(ài)心的示例代碼

    Python使用turtle和matplotlib繪制圓和愛(ài)心的示例代碼

    這篇文章主要是帶大家用Python的turtle和matplotlib畫(huà)出圓滿和愛(ài)心,文中的示例代碼講解的非常詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,感興趣的可以了解一下
    2023-06-06
  • Python讀大數(shù)據(jù)txt

    Python讀大數(shù)據(jù)txt

    本文通過(guò)2個(gè)例子給大家介紹了如何使用python實(shí)現(xiàn)讀取大文件txt的方法,有需要的小伙伴可以參考下
    2016-03-03
  • Linux中安裝Python的交互式解釋器IPython的教程

    Linux中安裝Python的交互式解釋器IPython的教程

    IPython是一種基于Python的Shell,由于有了Python編程語(yǔ)言的支撐,而比一般的Shell更加強(qiáng)大.下面就來(lái)看一下Linux中安裝Python的交互式解釋器IPython的教程
    2016-06-06

最新評(píng)論