爬虫抓取网页数据(需求抓取知乎问题下所有回答的爬虫意义在哪?)

优采云 发布时间: 2021-09-21 07:16

  爬虫抓取网页数据(需求抓取知乎问题下所有回答的爬虫意义在哪?)

  我没有看到你很长一段时间,工作有点忙......虽然它每天都在爬虫中写着,它是用很多爬行动物解锁的,但它已经使用了很长时间由于在工作中的NodeJS编写Python。

  解决需求问题,Python或nodejs是否只是语法和模块,分析思路和解决方案基本上是一致的。

  最近写了一个简单的知乎回答爬虫,我有兴趣告诉它。

  

  需求

  

  在知乎问题下抓住所有答案,包括它的作者,作者粉丝号,回答内容,时间,回答号码,回答回答,并链接到答案。

  

  

  

  

  分析

  

  问题在上图中是一个例子,您想要获得相关数据的答案,通常我们可以按F12分析Chrome浏览器下的请求;但是,在查理捕获工具中,您可以更直观地获取相关领域:

  

  

  

  请注意,LER U U UER String参数指示请求每次返回5个答案,并且测试可以更改为20;偏移代表从第一平均值开始;

  返回的结果

  是JSON格式。每个答案收录更多信息,我们只需要过滤要捕获的字段记录。

  需要注意的是,答案返回内容字段,但其格式是Web标记。搜索后,我选择HTMLParser来解析,您将手动处理。

  代码

  

  import requests,jsonimport datetimeimport pandas as pdfrom selectolax.parser import HTMLParser

url = 'https://www.zhihu.com/api/v4/questions/486212129/answers'headers = { 'Host':'www.zhihu.com', 'user-agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36', 'referer':'https://www.zhihu.com/question/486212129'}df = pd.DataFrame(columns=('author','fans_count','content','created_time','updated_time','comment_count','voteup_count','url'))

def crawler(start): print(start) global df data= { 'include':'data[*].is_normal,admin_closed_comment,reward_info,is_collapsed,annotation_action,annotation_detail,collapse_reason,is_sticky,collapsed_by,suggest_edit,comment_count,can_comment,content,editable_content,attachment,voteup_count,reshipment_settings,comment_permission,created_time,updated_time,review_info,relevant_info,question,excerpt,is_labeled,paid_info,paid_info_content,relationship.is_authorized,is_author,voting,is_thanked,is_nothelp,is_recognized;data[*].mark_infos[*].url;data[*].author.follower_count,vip_info,badge[*].topics;data[*].settings.table_of_content.enabled', 'offset':start, 'limit':20, 'sort_by':'default', 'platform':'desktop' }

#将携带的参数传给params r = requests.get(url, params=data,headers=headers) res = json.loads(r.text) if res['data']: for answer in res['data']: author = answer['author']['name'] fans = answer['author']['follower_count'] content = HTMLParser(answer['content']).text() #content = answer['content'] created_time = datetime.datetime.fromtimestamp(answer['created_time']) updated_time = datetime.datetime.fromtimestamp(answer['updated_time']) comment = answer['comment_count'] voteup = answer['voteup_count'] link = answer['url']

row = { 'author':[author], 'fans_count':[fans], 'content':[content], 'created_time':[created_time], 'updated_time':[updated_time], 'comment_count':[comment], 'voteup_count':[voteup], 'url':[link] } df = df.append(pd.DataFrame(row),ignore_index=True)

if len(res['data'])==20: crawler(start+20) else: print(res) crawler(0)df.to_csv(f'result_{datetime.datetime.now().strftime("%Y-%m-%d")}.csv',index=False)print("done~")

  

  结果

  

  最终捕获结果大致如下:

  

  

  

  你可以看到一些答案是空的。如果你去这个问题,你可以检查它是一个视频答案。如果没有文本内容,则忽略了,当然,您可以删除结果的视频链接。

  current(202 1. 0 9)看看此问题界面没有特定的限制,包括直接在没有cookie的代码中的请求,并通过修改限制参数来减少请求的数量

  

  crawli意味着

  

  最近我也想爬网咯咯知乎回的的,首先,我想总结一下分析的所有答案,但实际上抓住了这个想法来阅读它,我发现在表单中读取的阅读经验是很穷。更好地刷知乎;但更明显的价值是,水平对比这几百答案,答案,评论和作者的粉丝很清楚。此外,可以根据结果进行一些词频率分析,单词云映射显示等,这些是稍后的单词。

  爬虫只是获取数据的方法,如何解释它是更大的数据价值。

  我是泰德,一天写一个爬虫,但我没有写过Python的数据工程师,我将继续更新一系列思克Python爬行动物项目。欢迎继续注意〜

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线