您的位置:首頁技術文章
文章詳情頁

python - 抓包只抓到json,真實的地址卻找不到

瀏覽:105日期:2022-09-10 11:20:38

問題描述

用charles對一覽(https://www.yilan.io/home/?ca...)進行抓包,該頁面是懶加載形式,每一次加載會生成一個recommended(登錄情況下文件名變化但是原理相同),這個文件里面有json可以取得想要的數據。但是post的地址(見圖片頂部)如果直接復制訪問會報404,不知道該如何獲得可以獲取數據的真實地址,并進行若干個recommended的批量抓取呢?謝謝!python - 抓包只抓到json,真實的地址卻找不到

問題解答

回答1:

說一下我的方法,已經爬取到數據。我用的是firebug,打開后找到如下路徑:https://www.yilan.io/article/recommendedpython - 抓包只抓到json,真實的地址卻找不到看了一下要post的內容,需要這組數據{'skip':0,'limit':20}。下面開始寫代碼:

import urllib2import urllibimport gzipfrom StringIO import StringIOimport jsonapi = ’https://www.yilan.io/article/recommended’data = {'skip':0,'limit':20}headers = { ’Accept’: ’application/json, text/plain, */*’, ’Accept-Encoding’: ’gzip, deflate’, ’Accept-Language’: ’zh-CN,zh’, ’Connection’: ’keep-alive’, ’Cookie’: ’XSRF-TOKEN=APc3KgEq-6wavGArI6rLf6tPW69j7H_Qm2s0; user=%7B%22_id%22%3A%22%22%2C%22role%22%3A%7B%22title%22%3A%22anon%22%2C%22bitMask%22%3A1610612736%7D%7D; Metrix-sid=s%3AjDAFvFGo3C0BJzR7cTXBXHl6VM493Gp0.C1svjUqfnY3NhUluURMDdaL3HEpUX8rpSj9%2F9yhKnEI’, ’User-Agent’: ’Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:51.0) Gecko/20100101 Firefox/51.0’, ’X-XSRF-TOKEN’: ’APc3KgEq-6wavGArI6rLf6tPW69j7H_Qm2s0’ }url_data = urllib.urlencode(data)request = urllib2.Request(api, data=url_data,headers=headers)content = urllib2.urlopen(request).read()contents = StringIO(content)f = gzip.GzipFile(mode=’rb’, fileobj=contents).read()b = json.loads(f)print b

運行結果如下:

[{u’readCount’: 12, u’siteTitle’: u’u5de5u5177u7656’, u’siteUrl’: u’http://jianshu.milkythinking.com/feeds/collections/2mvgxp’, u’siteFavicon’: u’http://7xiyp4.com2.z0.glb.qiniucdn.com/site-5627773e8b3ac7e104c6280f-favicon’, u’feature_image’: u’http://7x2wdd.com2.z0.glb.qiniucdn.com/54e7178471ab07ea378e0d254a57b3cc’, u’author’: u’’, u’url’: ...]

然后提取想要的內容就行,可以更改limit的值來改變一次所要獲取的內容數量。該網站可能會在后臺檢查你所post的數據,如果錯誤會導致404,這也就是直接打開該路徑不能訪問的原因。

回答2:

大概是 HTTP HEADERS 設置不當,具體如何設置我也看不出來,可以來一套模擬常規瀏覽器的HEADERS,或者在瀏覽器跟蹤一下請求。

標簽: Python 編程
国产综合久久一区二区三区