Miss_so_so 2021-11-19 15:21 采纳率: 100%
浏览 74
已结题

python爬虫报错,哎,自学进度止步两天!

问题遇到的现象和发生背景

爬取豆瓣网动画片最高分,按照书上的代码敲出来后报错了,如图

img


补充代码:

import requests
import json #用于处理JSON格式数据的模块
url="https://movie.douban.com/typerank?type_name=%E5%8A%A8%E7%94%BB&type=25&interval_id=100:90&action=" #请求地址
params={"type":25,"interval_id":"100:90","action":"","start":"0","limit":"149"}  #需要携带的动态参数
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36"}  #模拟浏览器的身份验证信息
response=requests.get(url=url,params=params,headers=headers)
content=response.json() #提取JSON格式数据
for i in response:
    print(json.dumps(i,indent=4,ensure_ascii=False,separators=(",",":"))) #ensure_ascii设置将数据编码后显示文本内容,spearators设置键之间的、键和值之间的分隔符,indent设置缩进量
    break #只需打印第1条JSON格式数据用于查看,因此主动结束循环
with open("豆瓣电影动画排行榜.txt","w",encoding="utf-8") as fp:
    for i in response:
        title = i["title"] #片名
        score = i["score"] #评分
        fp.write(title+""+score+"\n") #\n表示换行
操作环境、软件版本等信息

环境不知道是什么环境,软件是PYCharm

尝试过的解决方法

百度说需要添加其他代码,因为是跨专业初学者,实在是不知道要加什么代码

我想要达到类似于这样的结果

img

补充:最后导出在txt文件里了,所以应该出现类似于这样的效果

img

  • 写回答

2条回答 默认 最新

  • CSDN专家-showbo 2021-11-19 15:48
    关注

    豆瓣的数据接口是
    https://movie.douban.com/j/chart/top_list?type=25&interval_id=100%3A90&action=&start=0&limit=20

    img


    不是搜索页面,搜索页面没有数据,而且返回的也不是json字符串,是html代码

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 关注

    获取的json数据不正确。你输出下response.text看看是什么内容。
    可能是网站改版了,书上以前的代码就不能用了

    把你的代码用代码段</>的文本形式发一下,我调试下看看,你发图片我们没办法调试和修改。

    img

    你题目的解答代码如下:

    import requests
    import json #用于处理JSON格式数据的模块
    url="https://movie.douban.com/j/chart/top_list" #请求地址
    params={"type":25,"interval_id":"100:90","action":"","start":"0","limit":"149"}  #需要携带的动态参数
    headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36"}  #模拟浏览器的身份验证信息
    response=requests.get(url=url,params=params,headers=headers)
    content=response.json() #提取JSON格式数据
    with open("豆瓣电影动画排行榜.txt","w",encoding="utf-8") as fp:
        for i in content:
            title = i["title"] #片名
            score = i["score"] #评分
            fp.write(title+""+score+"\n") #\n表示换行
    

    img

    如有帮助,望采纳!谢谢!

    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月30日
  • 已采纳回答 11月22日
  • 修改了问题 11月19日
  • 请提交代码 11月19日
  • 展开全部

悬赏问题

  • ¥15 win11安卓子系统打开谷歌登录不了切使用浏览器显示处于离线状态
  • ¥15 三维直角坐标系下,给定一个平面内四个点坐标,如何将四个点逆时针排序
  • ¥15 UnityWebRequest访问内网地址502
  • ¥20 Python语言来实现牛顿法(Newton's Method)解决非线性(系统)方程的问题。
  • ¥15 matlab控制工业相机采集图像
  • ¥25 R里做折线图和柱状图
  • ¥20 使用kokkos移植项目,遇到问题
  • ¥15 求该问题的Matlab代码
  • ¥15 python下使用pdpbox为何提示has no attribute 'pdp_isolate'?
  • ¥15 求java web病房管理系统项目,用netbeans做的