**
import requests
import json
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'}
url = 'https://api.bilibili.com/x/web-interface/popular'
params = {'ps':'20','pn':'1'}
response = requests.get(url=url,headers=headers,params=params)
content = response.json()
for i in content:
print(json.dumps(i,indent=4,ensure_ascii=False,separators=(',',':')))
break
**
python爬虫问题。这个代码是书里给的,例子是爬豆瓣的排名,可以爬出来。我把headers、URL、params换成b站的热门排名,其他没有改。但是只能输出“code”,没有其他内容。我找的网站代码位置应该没有错,response里确实是视频信息。现在不知道是哪里出错了。
兄dei,我懂你,你就是想要视频信息呗,你读取content字典的时候,看它的结构,你应该是要content字典里面的data数据里面的list吧,我给你改了改,你试一下是不是好了~
import requests
import json
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'}
url = 'https://api.bilibili.com/x/web-interface/popular'
params = {'ps':'20','pn':'1'}
response = requests.get(url=url,headers=headers,params=params)
content = response.json()
for i in content["data"]["list"]:
print(json.dumps(i,indent=4,ensure_ascii=False,separators=(',',':')))
break
运行结果在此:
这段代码只能输出code是因为在for循环中,content是一个字典类型的数据,其中只有一个键为'code',对应的值为返回的状态码。因此,循环只执行了一次,输出了'code'的键和值。如果想要输出更多的信息,可以将for循环的范围扩大到content中包含的所有键值对。
import requests
import json
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}
url = 'https://api.bilibili.com/x/web-interface/popular'
params = {'ps': '20', 'pn': '1'}
response = requests.get(url=url, headers=headers, params=params)
content = response.json()
# 你上面的都没有问题, 就是后面找地址的时候出错了
for item in content.get('data').get('list'):
print('视频标题:{}\t视频地址:{}'.format( item.get('title'),item.get('short_link_v2') ))
根据您提供的参考资料来看,您提供的是两份代码,一份是发送弹幕的,另一份是爬取B站弹幕的。请先确认一下您需要的是哪个代码。
如果您需要的是发送弹幕的代码,请参考段落0,其中提到了使用的Python库requests、tkinter和random,可以先确认一下这些库是否已经安装。如果没有安装,可以使用pip install进行安装。
另外,请您在代码中更新复制自己的cookie和csrf_token,以确保代码正常运行。
如果您需要的是爬取B站弹幕的代码,请参考段落1,其中也需要使用requests库和lxml库,同样需要先确认是否已经安装。在代码中,还先请求了一个XML格式的数据,然后使用etree库进行解析,最后把解析得到的弹幕内容保存为CSV文件。如果您需要将其保存成其他格式,可以参考pandas库的相关文档进行修改。