打开中国Mooc网 随便选一个课程,进入
点开课程评价,F12开始抓包
通过搜索大法找到,可以发现是没有任何的阻碍的
点击进去看包的内容
有经验的就知道了 csrf是防跨域的,不用管,courseid 是课程的id(见下图) pageindex是控制翻页,pagesize是控制评论数量 ,orderby猜测是评论排序类型,现在直接模拟请求。
由此,精品评论的爬取已经结束。代码如下,具体cookie需要自己补。
import requests
headers = {
"accept": "*/*",
"accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
"content-type": "application/x-www-form-urlencoded",
"origin": "https://www.icourse163.org",
"referer": "https://www.icourse163.org/course/UESTC-238011",
"sec-ch-ua": "Microsoft",
"sec-ch-ua-mobile": "0",
"sec-ch-ua-platform": "Windows",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
}
url = "https://www.icourse163.org/web/j/mocCourseV2RpcBean.getCourseEvaluatePaginationByCourseIdOrTermId.rpc"
params = {
"csrfKey": "76bb3eea832f4911111d0a8868d"
}
data = {
"courseId": "238011",
"pageIndex": "1",
"pageSize": "20",
"orderBy": "3"
}
response = requests.post(url, headers=headers, params=params, data=data)
print(response.text)
print(response)
接下来开始进入稍有难度的爬取 评论区板块评论。
点入讨论区,发现有主题,我们的目的是爬取全部主题里面的帖子。 老规矩F12 分析,加全局搜索,这里不过多赘述。
我们这里发现,搜索不到了, 这里手动找数据。
打开这个包返回的数据看看发现是这种类型,跟数据很像,但又看不出数据的逻辑,
其实有经验的就知道,这是unicode编码了,我们通过在线的unicode网站进行解码
解码后发现,数据出来了,但这种很显然是js代码,不方便我们使用python取出数据,怎么办呢? 接下来就进入到了提取数据的环节。 我们进行分析js代码,这个没什么好分析的,就是新建很多dict和list ,然后进行键值写入,最后append到底部 dwr.engine._remoteHandleCallback('1712718893872', '0', 这个函数的results键里,我这里是s8 ,我们找一个在线js调试网站试试。
文章到这里就结束了,希望能帮助到新学习的python小白和同志们,麻烦点个赞和收藏,你们的支持是我最大的动力,下一篇出个网易云评论抓取~