python爬取知乎文章_大佬分享Python编程实现爬取知乎用户信息的例子

有一天 , 我发现我心仪已久的妹子在朋友圈里分享了知乎专栏的文章 , 就知道她也刷知乎 . 如果在知乎上关注她 , 我就能知道 , 她最近关注什么 , 心里想些什么 , 了解了解她喜欢的方面 , 还能作为谈资 , 简直太好了。有一次我们两个聊天的时候 , 刚好说到了她分享的那篇文章 ,我很自然的说: “知乎上你用的不是真名呀, 就我这么天真用了真名.”她笑着说:”那个可以改呀” ,“凭什么知乎团队不让我改啊!!! “,我答道,” 不如我们互粉吧 ”

哎 , 于是她打开知乎 , 看了看我的主页 , 并没有关注我…… 可能是赞太少了吧… 达不到她的要求 , 或者她不想让我知道她在看什么吧 , 也许她希望自己的知乎是交浅言深 , 不希望被身边人看见,

我回去想了想 , 她说名字可以改 , 那她可能以前也用的是真名 , 找到破绽了!

知乎的名字可以改 , 但是id是改不了的 !

每个人的主页地址 , people后面那个就是TA的id,例如张三同名很多 , 后面就会加上数字. 她的名字拼音相同的较多 , 我试了一下 , 这个数字是不超过100的. 它的组合方式有 zhang-san , zhang-san-1 zhang-san-12-43 依次类推.

好 , 现在我就可以开始寻找她的账号了! 既然她改名了 , 那她名字满足的条件一定是: 昵称的拼音不是真名. 这个用pypinyin模块可以解决 , 这样子 , 需要我人工查看的主页就少很多了.那怎么通过Python爬虫找到她呢?

下面说一下代码的思路,怎么爬取知乎用户信息,这次爬虫用到了递归,本次用的scrapy抓取以及mogodb数据库存储的。

首先本人是用了一个大V作为爬虫第一个网页,然后分三步,第一步是爬了该大V的详细信息然后存入数据库,第二步是爬取了该大V的粉丝,第三是爬取了该大V 的关注者(其实就是爬取粉丝或者关注者的token_url),完成之后,利用爬取的粉丝以及关注者的数据构造他们每个人详细信息的url,然后挖取详细 信息存入数据库。到这里递归第一步算是完成了,然后爬虫会从每一个粉丝和关注者入手,分别爬取他们的粉丝以及关注者的详细数据,不断递归

在代码里面还有加入了一些自动翻页的功能,有兴趣可以看看。下面是我们item里面定义要抓取的数据:

import scrapyclass ZhihuUserItem(scrapy.Item):

# define the fields for your item here like:

# name = scrapy.Field()

answer_count = scrapy.Field() #回答数量

articles_count = scrapy.Field() #写过的文章数

follower_count = scrapy.Field() #粉丝数量

following_count = scrapy.Field() #关注了多少人

educations=scrapy.Field() #教育背景

description = scrapy.Field() #个人描述

locations = scrapy.Field() #所在地

url_token =scrapy.Field() #知乎给予的每个人用户主页唯一的ID

name=scrapy.Field() #用户昵称

employments = scrapy.Field() #工作信息

business=scrapy.Field() #一些工作或者商业信息的合集

user_type =scrapy.Field() #用户类型,可以是个人,也可以是团体等等

headline =scrapy.Field() #个人主页的标签

voteup_count = scrapy.Field() #获得的赞数

thanked_count=scrapy.Field() #获得的感谢数

favorited_count = scrapy.Field() #被收藏次数

avatar_url = scrapy.Field() #头像URl

代码一共不足80行,运行了一分钟就抓了知乎一千多个用户的信息,这里上张结果图

由上图可以看到,知乎用户中学生用户占据多数,其它的比如产品经理、程序员、运营、HR数量也不少。我们看一下具体的排名(前十名):

去除学生后,知乎主流职业比重从大到小依次是(前十名):产品经理、自由职业、程序员、工程师、设计师、腾讯、教师、人力资源(HR)、运营、律师。可以看到,除了一些互联网公司的常见职位外,教师和律师用户在知乎中也占据不小的比重。

我知道伸手党确实十分惹人厌,我明白知友辛苦耕耘、分享知识、经验和见解都是对其他知友以及互联网,甚至社会的贡献。知乎的出现,其实是在为社会进步出力。但当我们谈起知乎的时候,我们谈的是什么?

对知乎来说,她存在的意义在用户身上。况且,我相信知乎团队这个有梦想、有担当的团队,知乎团队一定了解并清楚地认识到自己的处境和立足点。祝知乎越来越好!大家加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
需要使用Python编程语言来乎问题下的所有回答。具体步骤如下: 1. 首先需要安装Python的requests和beautifulsoup4库,用于发送HTTP请求和解析HTML页面。 2. 获乎问题页面的URL,可以手动复制粘贴,或者使用虫自动获。 3. 使用requests库发送GET请求,获乎问题页面的HTML源代码。 4. 使用beautifulsoup4库解析HTML源代码,获所有回答的信息。 5. 对每个回答进行解析,获回答的文本、作者、点赞数、评论数等信息。 6. 将获到的信息存储到本地文件或数据库中。 下面是一段示例代码,可以乎某个问题下的所有回答: ```python import requests from bs4 import BeautifulSoup # 乎问题页面的URL url = 'https://www.zhihu.com/question/xxxxxx' # 发送GET请求,获页面HTML源代码 response = requests.get(url) html = response.text # 解析HTML页面,获所有回答的信息 soup = BeautifulSoup(html, 'html.parser') answers = soup.find_all('div', class_='List-item') # 遍历每个回答,解析并存储信息 for answer in answers: # 解析回答文本、作者、点赞数、评论数等信息 text = answer.find('div', class_='RichContent-inner').get_text() author = answer.find('div', class_='ContentItem-head').get_text() upvotes = answer.find('button', class_='Button VoteButton VoteButton--up').get_text() comments = answer.find('button', class_='Button ContentItem-action Button--plain Button--withIcon Button--hoverCard').get_text() # 将信息存储到本地文件或数据库中 with open('answers.txt', 'a', encoding='utf-8') as f: f.write(f'{author}\n{text}\n赞同数:{upvotes} 评论数:{comments}\n\n') ``` 需要注意的是,乎数据属于个人行为,需要遵守乎的相关规定,不得用于商业用途。另外,速度也需要适当控制,避免给服务器造成过大的负担。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值