c爬虫抓取网页数据(抓取知乎所有用户信息的爬虫代码逻辑以及分析分析方法)
优采云 发布时间: 2022-02-05 09:09c爬虫抓取网页数据(抓取知乎所有用户信息的爬虫代码逻辑以及分析分析方法)
2021-11-27
今天用递归写了一个爬虫,抓取知乎的所有用户信息。源代码放在github上。有兴趣的同学可以下载看看。这里介绍一下代码逻辑和分页分析。首先,看网页。,这里我随机选择一个大V作为入口,然后点击他的关注列表,如图
我们都知道 Python 很容易学习,但我们只是不知道如何学习它以及在哪里可以找到信息。在这里,python学习交流QQ群233539995,分享我精心准备的Python学习资料,0基础到高级!希望大家在学习Python的道路上少走弯路!来吧!
注意我的爬虫全名是非登录状态。这里的fan list和follower list是后台ajax请求获取的数据(没听说过ajax的不要慌,ajax请求和普通浏览器请求没什么区别,主要是偷偷发给服务器的)当我们浏览网页的时候请求是为了节省流量,减少请求次数,不然每次看新数据都会刷新网页,服务器压力很大,所以我们有这个东西),然后我们找到粉丝列表和关注者列表的网址,很简单,点击chrome浏览器下的页码开关即可找到,如图
很容易找到关注者和粉丝的 URL。让我们来看看这些数据。这是粉丝数据的一个例子。如图,是一段json
这里找到了粉丝的数据,但这不是用户的详细信息,只是部分数据,但是他提供了一个token_url,我们可以得到这个ID访问用户的详细信息,我们来看看如何提取每个用户的详细信息。在这里楼主发现,在看粉丝或者关注列表的时候,网页会自动触发对用户详细信息的请求,如图
本次获取用户详细信息查询的URL。我们来看看这个详细信息的URL,如图。
上面介绍了网页的基本分析。先说一下代码的思路。本次爬虫使用递归,本次使用scrapy进行爬取,存储mogodb数据库。
首先,我用了一个大V作为爬虫的第一个网页,然后分为三个步骤。第一步是爬取大V的详细信息,然后存入数据库。第二步是爬大V的粉丝。第三步是爬大V的粉丝(其实就是爬粉丝或者粉丝的token_url)。完成后,利用粉丝和关注者的爬取数据,构造他们每一个详细信息的url,然后挖掘详细信息存入数据库。至此,第一步递归完成,接下来爬虫会从每个粉丝和粉丝开始,分别爬取他们粉丝和粉丝的详细数据,继续递归。
代码中还添加了一些自动翻页功能,有兴趣的可以看看。以下是我们项目定义中要捕获的数据:
import scrapyclass 知乎UserItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() answer_count = scrapy.Field()
#回答数article_count = scrapy.Field()
#Written 文章 number follower_count = scrapy.Field()
#关注粉丝数_count = scrapy.Field()
#有多少人关注了educations=scrapy.Field()
#教育背景描述 = scrapy.Field()
#个人描述位置 = scrapy.Field()
#Location url_token =scrapy.Field()
#知乎给每个用户首页的唯一ID name=scrapy.Field()
#用户昵称员工 = scrapy.Field()
#工作信息business=scrapy.Field()
#工作或业务信息的集合 user_type =scrapy.Field()
#用户类型,可以是个人、群组等。headline =scrapy.Field()
#个人主页标签 voteup_count = scrapy.Field()
#获得的点赞数Thanks_count=scrapy.Field()
#感谢次数喜爱的_count = scrapy.Field()
#采集数量 avatar_url = scrapy.Field()
#头像网址
代码总共不到 80 行。运行一分钟后,它捕获了知乎 1000多个用户的信息。这是结果图片。
最近一直在忙别的事情,终于可以天天写爬虫了。不知道大家对这篇文章有没有什么问题,可以随时跟我提。
最后要提的是,爬取一定要伪装headers,里面有一些东西是服务器每次都会检查的。
我们都知道 Python 很容易学习,但我们只是不知道如何学习它以及在哪里可以找到信息。在这里,python学习交流QQ群233539995,分享我精心准备的Python学习资料,0基础到高级!希望大家在学习Python的道路上少走弯路!来吧!
分类:
技术要点:
相关文章: