网页抓取数据百度百科( 如何获取到用户的信息前往用户主页,以轮子哥为例从中)
优采云 发布时间: 2022-01-31 17:20网页抓取数据百度百科(
如何获取到用户的信息前往用户主页,以轮子哥为例从中)
点我去Github查看源码别忘了star
本项目的github地址:
一.如何获取用户信息
进入用户主页,以Brother Wheel为例
从中可以看到用户的详细信息、教育经历主页、专业。行业、公司、关注量、回复数、居住地等。打开开发者工具栏查看网络,可以找到,通常html或json的数据在Html页面中。
网址是,excited-vczh是轮哥的id,只要拿到某个人的id就可以得到详细信息。
二.信息隐藏在哪里?
通过解析这个json数据,可以找到用户信息
根据URL下载Html页面,解析json获取用户信息
三.如何获取更多用户ID
每个人都有自己的关注列表,关注的人和被关注的人,抓住这些人,然后去这些人的主页抓取关注列表,这样你就找不到用户了。
还有nexturl,这个链接可以保存。如果isend为真,则列表翻到最后,不需要保存url
二.爬虫工作流程
有两个爬虫模块。一个爬虫负责从 nexturl 队列中获取 url,下载 json 并解析它。将获取的 nexturl 插入到哈希表中。如果插入成功,则将其添加到队列中。
另一个负责从urltoken队列中获取urltoken,下载解析页面,将用户信息存入数据库,将nexturl存入nexturl队列
三.常见问题解决思路
重复爬取问题
解析出来的Urltoken肯定有很多重复。我很高兴获得了很多数据,但发现它们都是重复的,这是不可接受的。解决方法是将已经加入队列的urltoken放入哈希表中进行标记
从断点爬升
爬取数百万用户是一个相对较大的工作量。不能保证一次爬取完成。中间数据仍然需要持久化。此处选择 Redis 数据库。对于爬取任务,加入队列。如果程序中途停止,重新启动它只需要再次获取队列中的任务并继续爬升
反爬虫问题
爬取过于频繁,服务器返回 429. 这时候需要切换代理IP。我自己搭建了代理IP池(),购买了服务商提供的代理服务。
例如,阿布云:
多台机器一起爬行
任务比较大。在实验室电脑的帮助下,一共有10台电脑,5台电脑安装了Redis,3台作为哈希表,2台作为队列,具有很好的扩展性。