Python爬取页面数据TypeError: list indices must be integers or slices, not str 出错? 30

代码:data_list=data['data']['response']['results']['content']fordata1indata_list:try:vi... 代码:
data_list = data['data']['response']['results']['content']

for data1 in data_list:try:video_title = data1['title'] +'.mp4' # 视频文件名video_url = data1['play_url'] # 视频的url# print(video_title,video_url)except Exception as e:break

请问嵌套循环这情况怎么写或者怎么修改哦,谢谢!
展开
 我来答
zyc916
2020-10-14
知道答主
回答量:27
采纳率:100%
帮助的人:2.7万
展开全部

数据结构大致是这样的:data变量->data->response->results(list)->content

也就是说,results其实是一个List,而List只能通过索引(index)获取元素,而不是字符串str

这意味着你需要把代码改为:

data_list = data['data']['response']['results']  # 获取results列表


for data1 in data_list:

    try:

        video_title = data1['content']['title'] +'.mp4' # 视频文件名

        video_url = data1['content']['play_url'] # 视频的url

        print(video_title,video_url)

except Exception as e:

        break

追问

目前还是有点小问题请教您!

1:只能下载16个视频,不能自动刷新页面,实际上大于16个视频

2:下载的视频都是1.5M左右的标清,请问怎么下载1080高清或无水印视频?

3:出现错误PEP 8: E501 line too long (1534 > 120 characters),请问有么影响?


追答

1. 根据JS控制台,我抓取到以下信息:


https://haokan.baidu.com/web/author/listall?app_id=1598885037570192&ctime=<时间戳>&rn=1&_api=1


在刷新视频列表时,rn不断变化,可能代表了视频组顺序,因此你需要多次请求rn=1,2,3(for i in ...)

注:为了安全,ctime时间戳需要用程序加入。

柯柯影视记
2020-11-19 · 精彩的影视剧片段分享
柯柯影视记
采纳数:16 获赞数:22

向TA提问 私信TA
展开全部
下载高清视频推荐 you-get 库 如果可以的话把爬取的url发下或者私密我试一试看看怎么写
追问

您好,请查收:网页链接

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式