Python采集某评论区内容的实现示例
作者:极客飞虎 发布时间:2023-02-28 15:07:10
前言
我们知道在这个互联网时代,评论已经在我们的生活到处可见,评论区里面的信息是一个非常有趣和有争议的地方。我们今天,就来获取某技术平台的评论,和大家分享一下,我获取数据的过程,也是一个尝试的过程。
发送请求
我们首先,确定我们要获取哪一个文章下面的评论区。我们先使用开发者工具,定位到我们要的数据。
我们通过数据抓取,我们发现,这个平台的评论区数据,放在了一个叫getlist
数据包里面了。
我们就不难明白,我们只要请求这个url
,在传一个关于文章的参数,我们就能获取到我们想要的数据。而且,我们发现,这个是post请求。我们先按正常思路写代码。
import requests
url = 'https://xie.infoq.cn/public/v1/comment/getList'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36',
}
res = requests.post(url,headers=headers)
print(res)
我们发现返回了一个<Response [451]>
的值,我们可能就是少穿了参数,我们接下来,把参数加上试试。
data = {
'id': "594899140323389440",
'score': '1682043841339',# 1681968121323
'size': '100',
}
我们发现还是不行,所以,我们想到了,这个要加一个防盗链。我们把相应的参数传进去,我们再来看看效果。
headers ={
'Host': 'xie.infoq.cn',
'Origin': 'https://xie.infoq.cn',
'Referer': 'https://xie.infoq.cn/article/a5f16dffb45139cba72691c29',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36',
}
res = requests.post(url,data = data,headers=headers)
我们发现虽然返回了<Response [200]>
,但是,我们还是拿不到数据,我们看看服务器给我们返回了什么样子的数值。
{"code":-1,"data":{},"error":{"code":-2005,"msg":"ID不能为空"},"extra":{"cost":0.000170465,"request-id":"7c1dc236c95aceb9e56da271b056be88@2@infoq"}}
它提示我们"msg":"ID不能为空"
,说明我们data传入传错了。
不难看出,就是我们的文章id没有传进去,可能是我们传递的参数方式错了,我们这里要注意,要用json
格式传参。正确的请求方式如下:
res = requests.post(url,json = data,headers=headers)
我们发现,就可以获取到了数据,在这个过程,我们不断的尝试,最后,也拿到了我们想要的数据,我们会不会有一些成就感。我们看看获取到了什么样子的数据吧。
拿到了,这样的数据,大家就不难拿到我们要的数据,直接字典取值就好了,今天,我们用了大篇幅的段落,来解释我们是如何获取数据的。
解析数据
我们接下来就可以解析数据了,代码很简单。我这里直接获取评论了,不获取评论者了,原理是一样的,大家感兴趣的可以自己去试试。
datas = res.json()['data']['list']
for contents in datas:
content = contents['content']
print(content)
这段代码将从 res.json()['data']['list']
中获取数据,并将其存储在 datas
变量中。然后,它使用一个 for
循环遍历 datas
中的每个元素,并将每个元素的 content
属性存储在 content
变量中。最后,它打印出每个元素的 content
属性。
我们直接看效果,这个很简单的。
来源:https://juejin.cn/post/7224840969790701626


猜你喜欢
- 本文实例讲述了Python计算已经过去多少个周末的方法。分享给大家供大家参考。具体如下:def weekends_between(d1,d2
- 本文实例为大家分享了JavaScript实现简单计算器的具体代码,供大家参考,具体内容如下代码:<!DOCTYPE html>&
- 线程间通信方法 1. 通信方法线程间使用全局变量进行通信 2. 共享
- 熟悉网页设计的网友就知道,调用Style的方法很多,我们可以单击鼠标右键选择Custon Style来调用Style标准,也可以在状态栏中的
- 上午在分析索引的使用情况,想看一下数据库什么时候启动的,确保统计的数据没有问题,可以使用下面三种方法查询:--2008及之后版本才有SELE
- 将Timestamp转为datetime类型在Pandas中我们在处理时间序列的时候常用的方法有:pd.to_datetime()pd.da
- 导言就计算机科学而言,caching就是将所需要的数据或信息的备份放在某个地方,便于快速访问的这样一个过程。以数据处理(data-drive
- Jupyter Notebook运行代码无反应在学习人脸识别知识的过程中需要用到Anaconda 、Jupyter Notebook.我在启
- What? 什么是面包屑面包屑是作为辅助和补充的导航方式(secondary navigation scheme),它能让用户知道在网站或应
- RSA是一种非对称加密算法,它的名字是由它的三位开发者,即RonRivest、AdiShamir和LeonardAdleman 的姓氏的首字
- 本文实例讲述了Python简单删除列表中相同元素的方法。分享给大家供大家参考,具体如下:去除列表中重复的元素,非常简单,直接上代码:a =
- 上篇文章分享了windows下载mysql5.7压缩包配置安装mysql后续可以选择①在本地创建一个数据库,使用navicat工具导出远程测
- 为音视频自动生成字幕的 python 工具autosub 是一个能自动为音视频生成字幕的 python 包,以下为其简介和使用说明。auto
- 如果MySQL服务器启用了二进制日志,你可以使用mysqlbinlog工具来恢复从指定的时间点开始 (例如,从你最后一次备份)直到现在或另一
- 1.文件结构MySQLdb和pymysql的使用差不多阅读的小伙伴可以自己尝试实现2.实验效果3.主文件:main.pyimport MyS
- 目标:利用python读取dicom文件,并进行处理生成info.txt和raw文件实现:通过pydicom读取dicom文件代码:impo
- 图片非常重要,它们可以让你的页面更好看,更引人注目。但是,高质量和漂亮的图片常常会很大,它们会让页面加载变慢并消耗更多带宽。所以我们,这些设
- 在setup()钩子函数中调用父组件<template><div> &nb
- 首先获取ip:<% userip=Request.ServerVariables(&qu
- 本文实例讲述了mysql累积聚合原理与用法。分享给大家供大家参考,具体如下:累积聚合为聚合从序列内第一个元素到当前元素的数据,如为每个员工返