之前一直都聽過抓包,抓包,但是一直沒有在手機上抓過包,這次一試,當做是一次小練習,在網(wǎng)上有挺多Fiddler安裝和配置的教程的,我也找了一些,大家可以借鑒:
1、Fiddler|Fiddler安裝與配置
2、抓包工具Fidder詳解(主要來抓取Android中app的請求)
3、使用Fiddler抓到包后分析
之前在安裝配置Fiddler的過程中因為使用某國產(chǎn)手機的原因無法使用代理被狠狠坑了一下,在此留個記號。
分析-01.png
左側這幾條就是我們要找的相關的含有評論信息的鏈接,右上方是request,右下方是response。從右上上可以看出是正常的get方式的請求,返回的是JSon格式的數(shù)據(jù)。
這個URL很長,看著很暈,我就把這個URL復制到TXT文件下對比一下:
分析-02.png
這個規(guī)律還是比較好找的,通過我不斷對評論頁的下拉,只有最后的offset參數(shù)按照20的整數(shù)倍發(fā)生改變,利用這個規(guī)律就可以構建URL進行模擬的請求。當然這個URL太長了可以進行適當?shù)目s減,里面有一些是設備的參數(shù),可以進行刪除,然后在瀏覽器上試一試看能不能返回相關的信息,最后我構建的URL:https://ic.snssdk.com/article/v2/tab_comments/?resolution=640*960&aggr_type=1&count=20&group_id=6462587303142359566&item_id=6462587303142359566&offset={}。
但是在對offset賦值的時候最多只能取到1500,再往后取是沒有返回評論信息的結果的,也就是說只能夠得到一千多條的評論信息。
接下來就可以進行編寫代碼了:
toutiao.py:
import scrapy
import json
from toutiao_chanfu.items import ToutiaoChanfuItem
class ToutiaoSpider(scrapy.Spider):
name = 'toutiao'
start_urls = ['https://ic.snssdk.com/article/v2/tab_comments/?resolution=640*960&aggr_type=1&count=20&group_id=6462587303142359566&item_id=6462587303142359566&offset={}'.format(i*20) for i in range(0,76)]
def parse(self, response):
item=ToutiaoChanfuItem()
html=response.text
if html:
content=json.loads(html)
if content:
datas=content.get("data")
if datas:
for data in datas:
comment=data.get("comment")
if comment:
item['user_name']=comment.get("user_name")
item['text']=comment.get("text")
# print(item['user_name']+':'+item['text']+'\n')
yield item
settings.py:
SPIDER_MODULES = ['toutiao_chanfu.spiders']
NEWSPIDER_MODULE = 'toutiao_chanfu.spiders'
MONGO_URI='localhost'
MONGO_DB='chanfuissue'
HTTPERROR_ALLOWED_CODES = [400]
ROBOTSTXT_OBEY = False
DOWNLOAD_DELAY = 3
COOKIES_ENABLED = False
DEFAULT_REQUEST_HEADERS = {
'Accept': '*/*',
'Accept-Language': 'zh-Hans;q=1, en;q=0.9, zh-Hant;q=0.8, fr;q=0.7, de;q=0.6, ja;q=0.5',
'Host: ic.snssdk.com'
'Proxy-Connection':'keep-alive',
'Cookie':'CNZZDATA1263676333=1053471997-1506224751-%7C1506224751; install_id=15419404350; qh[360]=1; ttreq=1$81cf78bc9e126dbc3f1e1a22789fdc99f9039157; UM_distinctid=15eb20c9b0da-0f7a55db4-3d5b614e-25800-15eb20c9b102e',
'X-SS-Cookie':'CNZZDATA1263676333=1053471997-1506224751-%7C1506224751; install_id=15419404350; qh[360]=1; ttreq=1$81cf78bc9e126dbc3f1e1a22789fdc99f9039157; UM_distinctid=15eb20c9b0da-0f7a55db4-3d5b614e-25800-15eb20c9b102e',
'Connection':'keep-alive',
'User-Agent':'News/6.3.4 (iPhone; iOS 7.0.3; Scale/2.00)',
}
ITEM_PIPELINES = {
'toutiao_chanfu.pipelines.MongoPipeline': 200,
}
成功運行后是這樣的:
運行-01.png
前幾次運行的時候都會出現(xiàn)400、502的狀態(tài)碼也不知是哪里抽風,后面直接卡死(傷不起的電腦?。┖竺嫖宜餍灾苯悠糁匦逻\行Pycharm。
最后的結果是存儲在Mongodb數(shù)據(jù)庫:
運行-02.png
一共共抓取到了1400多條的評論信息。



