关键字采集文章(移动端的反爬就是信息校验反爬虫的cookie分析方法介绍)
优采云 发布时间: 2022-02-07 15:05关键字采集文章(移动端的反爬就是信息校验反爬虫的cookie分析方法介绍)
本文章主要介绍如何使用Python爬取指定的关键词,具有一定的参考价值。有兴趣的朋友可以参考一下。希望看完这篇文章你能收获不少,让小编带你一起来了解一下。
01分析页面
这一次,我们选择了从移动端抓取微博。移动端的反爬是信息验证反爬的cookie反爬,所以我们首先需要登录获取cookie。
登录后,我们可以获取自己的cookies。不明白的可以看这篇文章学习Cookie,解决登录爬虫的烦恼!那么我们来看看用户是如何搜索微博内容的。
我们通常在这个地方输入关键词来搜索微博。
我在开发者模式下观察了这个页面,发现每次请求关键字时,都会返回一个 XHR 响应。
现在我们已经找到了数据实际存在的页面,就可以进行爬虫的正常操作了。
02 数据采集
上面我们找到了存储数据的真实网页,现在我们只需要向网页发出请求并提取数据。
01发起请求
通过观察请求头,不难构造请求代码。
代码显示如下:
key = input("请输入爬取关键字:") for page in range(1,10): params = ( ('containerid', f'100103type=1&q={key}'), ('page_type', 'searchall'), ('page', str(page)), ) response = requests.get('https://m.weibo.cn/api/container/getIndex', headers=headers, params=params)
02 提取数据
通过上面的观察,我们发现这个数据可以转换成字典进行爬取,但是经过我的实际测试,发现使用正则抽取是最简单方便的,所以这里介绍正则抽取的方法。有兴趣的读者可以尝试使用 Dictionary 方法提取数据。代码显示如下:
r = response.text title = re.findall('"page_title":"(.*?)"',r) comments_count = re.findall('"comments_count":(.*?),',r) attitudes_count = re.findall('"attitudes_count":(.*?),',r) for i in range(len(title)): print(eval(f"'{title[i]}'"),comments_count[i],attitudes_count[i])
这里有一个小问题需要注意。微博的标题采用 Unicode 编码。如果直接爬取存储,会以Unicode编码存储。我要感谢大家伙-小明的帮助。志斌在网上搜索。解决了很多都没有成功,最后小明用一个简单的函数解决了。我真的很佩服!
解决方法:使用eval()输出标题,可以将Unicode转成汉字。
感谢您仔细阅读此文章。希望小编分享的《如何用Python爬取指定的关键词》这篇文章文章对大家有所帮助,也希望大家多多支持。易速云,关注易速云行业资讯频道,更多相关知识等你来学习!