关键字采集文章(移动端的反爬就是信息校验反爬虫的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爬取指定的关键词》这篇文章文章对大家有所帮助,也希望大家多多支持。易速云,关注易速云行业资讯频道,更多相关知识等你来学习!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线