python爬取知乎话题广场_用于爬取知乎某个话题下的精华问题中所有回答的爬虫...

思路

我的整个算法的思路还是很简单的,文字版步骤如下:

1、通过话题广场进入某个话题的页面,避免了登陆注册页面的验证,查找到对应要爬取的话题,从 url 中得到话题id

2、该页面的所有资源采用了延迟加载,如果采用模拟浏览器进行加载的话还是很麻烦,经研究后发现知乎有前后端数据传输的api,所以获取数据方面是基于知乎提供的api

3、设置 offset 和 limit,以及将爬取的评论用几个正则和简单的去重操作进行处理,就能开始获取数据并存储到数据库里

2e6241a33ebeefa0fd1382f59ae81a95.png

用法

1、进入某个话题,得到话题ID,拿西邮为例,url为:https://www.zhihu.com/topic/20019540/top-answers,

则得到话题id为 20019540,并在在 main 中修改对应变量值

2、在 ZhiHuCrawler.py 代码中设置 q_num (爬取的精华问题的个数), ans_num (爬取的回答的问题个数)

3、在 saveMysql 方法中修改 mysql 的相关连接信息

4、执行该 ZhiHuCrawler 脚本

局限

1、知乎的反爬很简单,但是每年都在变,所以我版本适用于 2018 年的知乎,后续未知;

2、话题id只能手动获取,想改成非手动也很容易,可以拿上面的思路实现

3、去除脏数据时(评论去重)遇到了些困难还没有解决,比如对于恶意刷评论(内容重复),我们需要去重,但 mysql 中blog 长文本类型无法设置为唯一索引,所以现在设想解决方法有:

1、将评论编成 MD5 值

2、改用非关系型数据库实现去重,比如 Reddis

github

原文:https://www.cnblogs.com/Bw98blogs/p/10160781.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值