Python爬虫入门-fiddler抓取手机新闻评论

来源:互联网 发布:linux 文件不保存退出 编辑:程序博客网 时间:2024/06/02 04:09

之前一直都听过抓包,抓包,但是一直没有在手机上抓过包,这次一试,当做是一次小练习,在网上有挺多Fiddler安装和配置的教程的,我也找了一些,大家可以借鉴:

1、Fiddler|Fiddler安装与配置
2、抓包工具Fidder详解(主要来抓取Android中app的请求)
3、使用Fiddler抓到包后分析

之前在安装配置Fiddler的过程中因为使用某国产手机的原因无法使用代理被狠狠坑了一下,在此留个记号。

这次想练习的是今日头条新闻《跳楼产妇聊天记录曝光 丈夫:出事前未察觉她有情绪异常》 此新闻的相关评论信息。可以看到在PC端只是显示几条评论信息,所以就去爬移动端。
打开Fiddler,并且在手机上打开评论信息,不断下拉,可以看到评论会慢慢地加载出来,通过Fiddler的过滤功能,可以看到:

分析-01.png

左侧这几条就是我们要找的相关的含有评论信息的链接,右上方是request,右下方是response。从右上上可以看出是正常的get方式的请求,返回的是JSon格式的数据。
这个URL很长,看着很晕,我就把这个URL复制到TXT文件下对比一下:

分析-02.png

这个规律还是比较好找的,通过我不断对评论页的下拉,只有最后的offset参数按照20的整数倍发生改变,利用这个规律就可以构建URL进行模拟的请求。当然这个URL太长了可以进行适当的缩减,里面有一些是设备的参数,可以进行删除,然后在浏览器上试一试看能不能返回相关的信息,最后我构建的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 scrapyimport jsonfrom toutiao_chanfu.items import ToutiaoChanfuItemclass 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 = FalseDOWNLOAD_DELAY = 3COOKIES_ENABLED = FalseDEFAULT_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
前几次运行的时候都会出现400、502的状态码也不知是哪里抽风,后面直接卡死(伤不起的电脑啊)后面我索性直接掐掉重新运行Pycharm。

最后的结果是存储在Mongodb数据库:

运行-02.png

一共共抓取到了1400多条的评论信息。

原创粉丝点击