今天是2022年04月25日,上证指数刷新了至2020年7月以来的历史新低。对于股民来说,抱怨肯定少不了。那么小编想看看他们都说了些啥。
1、目标网站微博某博主号的文章
2、工具a> sublime text
b> python 解释器
- Step1:打开源代码
发现没有任何与评论相关的信息。放弃这条路 - Step2:登录网站
打开开发者工具,点击查看评论,观察Fetch/XHR这个模块下的url.
很明显,主要的url如下所示:
url = "https://weibo.com/ajax/statuses/buildComments?\n
is_reload=1&id=4762132170410005&is_show_bulletin=2&is_mix=0&count=10&uid=5993531560"
仔细观察“”预览“”下的内容有仅仅只有10条记录(count=10),因此继续拖动鼠标,发现出现了新的url如下所示:
url = "https://weibo.com/ajax/statuses/buildComments?\n
flow=0&is_reload=1&id=4762132170410005&is_show_bulletin=2&is_mix=0&max_id=269013940992537&count=20&uid=5993531560"
比较上面两个url,我们可以得出在新的url中,我们发现多了一些新的参数,例如:
flow=0,max_id = 269013940992537
这样看来,url之间并有什么规律,我们继续观察下一条新的url,如下:
url= "https://weibo.com/ajax/statuses/buildComments?\n
flow=0&is_reload=1&id=4762132170410005&is_show_bulletin=2&is_mix=0&max_id=159062778435413&count=20&uid=5993531560"
通过比较第二条和第三条url,我们发现只有一处不同,即
max_id_1 = 269013940992537
max_id_2 = 159062778435413
继续观察的话,我们很容易得出了url之间的关系,只有max_id发生了变化。只要找到每一url的max_id就可以获取到相应的数据了。
如果小伙伴足够细心的话,就很快就能发现,当前url的内容里面有下一条url的max_id,不信的话可以仔细瞧瞧。
这样一来,评论对应的网址找到了。
b> 敲代码,存储import requests
import json
import time
def download(html):
contents = html["data"]
for item in contents:
message = item["text_raw"]
fp.write(message)
fp.write("\n")
def get_comment(url):
global count
count+=1
headers = {
"accept":"application/json, text/plain, */*",
"accept-encoding":"gzip, deflate, br",
"accept-language":"zh-CN,zh;q=0.9",
"cache-control":"no-cache",
"cookie":"请使用各位自己的Cookie,前提是必须是登陆后的"
"pragma":"no-cache",
"referer":"https://weibo.com/1191965271/Ll4up5uxI",
"sec-ch-ua-mobile":"?0",
"sec-fetch-dest":"empty",
"sec-fetch-mode":"cors",
"sec-fetch-site":"same-origin",
"traceparent":"00-f2e1a0f377faabdd2d3b38f06e9a59ae-6ae9c963cc8d5d53-00",
"user-agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36",
"x-requested-with":"XMLHttpRequest",
"x-xsrf-token":"DBrIiRZWYprdvVW6Q1FymDxW",
}
res = requests.get(url=url,headers=headers)
html = res.json()
download(html) # 写入文件
if count<=10: # 在这里小编只写了10个url,各位小伙伴可以自行调节
time.sleep(1) # 避免爬取速度过快,稍微停下
print(f"{count}下载完成")
next_max_id = html["max_id"]
# 从第二个url开始后,所有的url的形式如同下面一致
new_url = f"https://weibo.com/ajax/statuses/buildComments?flow=0&is_reload=1&id=4762132170410005&is_show_bulletin=2&is_mix=0&max_id={next_max_id}&count=20&uid=5993531560"
get_comment(new_url)
if __name__=='__main__':
count = 0 # 记录获取多少个评论URL
fp = open('a.txt','a',encoding="utf-8") # 利用txt文件写入即可
# 初始URL
url = 'https://weibo.com/ajax/statuses/buildComments?is_reload=1&id=4762132170410005&is_show_bulletin=2&is_mix=0&count=10&uid=5993531560'
get_comment(url) # 程序开始
fp.close() # 文件写入完毕
4、分析评论
为了避免被微博禁止爬取数据,我们少爬取点数据,10页就行。
在这里,我们仅仅只做了10页248条数据的词云分析,仅供大家观看。
以上所有内容仅供学习使用,切莫用来“干坏事”。如果有什么问题,可以在评论区回复,小编看到后会及时做出回复。如果想转发,请说明转发地址。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)