学习笔记 ---爬虫(10)爬虫常用工具fiddler 和postman
在学django的时候因为自己爬虫还有很多节课没有学习.
本节记录自己学习爬虫基础之爬虫工具的使用,加一个微博指数的小案例.
目录
一, 抓包工具fiddler
我是看不懂英文,都怪英语没有学好.唉后悔了.不管了,咱们继续讲解.
设置这么可以开始操作啦.为什么用抓包工具,因为有一些包在浏览器使用时一闪而过,例如我们等下操作的"国家信息安全漏洞共享平台,这个网页"
这个时候就需要用抓包工具fiddler来抓这个状态码为521的包.因为里面有我们需要的能否成功访问这个网页的重要信息.
首先
1.清空fiddler里面的包.
2. 然后清空谷歌浏览器缓存,然后点击这个网页刷新.
解码后就成为html语言啦.开始.你的爬虫吧.里面就有js,css包,动态数据包|静态都有.
其实fiddler都是为爬虫作为前面的辅助工具.
二, 爬虫辅助工具postman
postman其实是一款特别强大的软件.作为爬虫辅助工具真的是屈才啦.
作用: 在爬虫成功访问网页之前,不知道需要带哪些headers才能正确访问,
所有,我们在post里面能模拟浏览器访问需要哪些headers
这里我终于在post里面安装了汉化包.唉,看不懂英文.
去浏览器访问微博指数.
今天的小案例我们以搜索指数为'病毒'为例.进行爬取他的实时指数.
为了成功访问这个网页.我们把这个网页的url 复制到postman里进行测调出的必带headers信息.
像下面这样.
经过不断的调试,最后发现所需要的headers信息为
host, referer, agent, 即可.其他多余的可带可不带,但是有时候带多余的会遇到反爬,少带也一样.所有干脆少带多余的,减少代码量.
开始小实战.
@微博指数('病毒')小案例.
""" 这里写的是面向对象编程. """ import requests from jsonpath import jsonpath import csv # 这个包是为了将爬取的数据以csv后缀保存.方便数据分析 class webozhishu(object): def __init__(self, i): self.url = 'https://data.weibo.com/index/ajax/newindex/getchartdata' self.headers = {'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) ' 'AppleWebKit/605.1.15(KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/' '604.1X-Requested-With: XMLHttpRequest', 'Host': 'data.weibo.com', 'Referer': 'https://data.weibo.com/index/newindex?visit_type=trend&wid=1091324264913', } # self.a = input('请输入查看的时间[1hour, 1day, 1month, 3month]:') self.i = i self.data = { 'wid': '1091324264913', 'dateGroup': '{}'.format(i) } def request(self, url): response = requests.post(url, headers=self.headers, data=self.data) if response.status_code == 200: return response.json() def parse(self, data_json): times = jsonpath(data_json, '$..x')[0] exponents = jsonpath(data_json, '$..s')[0] f = open('weibo_{}.csv'.format(self.i), 'w', encoding='gbk', newline='') # 这里我遇到一个问题,不能以with点open打开,打开在下面为csv文件添加数据时报错,必须以这样的形式. csv_w = csv.writer(f) csv_w.writerow(['病毒', '时间', '指数']) # 这里必须要以列表的形式添加数据. for time, exponent in zip(times, exponents): csv_w.writerow(['病毒', time, exponent]) print(time, '---->', exponent) f.close() def start_req(self): data = self.request(self.url) self.parse(data) if __name__ == '__main__': list_time = ['1hour', '1day', '1month', '3month'] # 这里是据分析,参数的改变为指数时间 for i in list_time: webo = webozhishu(i) webo.start_req()
成功获取数据.
今天就学习到这里,散会.
等等,励志语录还没有看呢.
&励志语录
虽然我走得很慢,但我从不后退!
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgfjhha
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01