自学python的新人 2022-07-15 23:48 采纳率: 88.9%
浏览 65
已结题

基础爬虫 不报错也不下数据


import urllib.parse
import urllib.request

def requert_get(page):
    first_url='https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&'
    data={
        'start':(page-1)*20,  #根据上面规则start = (page-)*20. 所以我们需要实参page的值
        'limit':20
    }
    data=urllib.parse.urlencode(data)
    url= first_url+data
    headers = {
        'User-Agent': ' Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49'

    }
    requerst=urllib.request.Request(url=url,headers=headers)
    return requerst

def reqopne_get(requerst):
    content = urllib.request.urlopen(requerst)       #模拟浏览器像服务器发送请求
    contents=content.read().decode('utf-8')
    return contents       #返回contents的值


def plase_get(page,contents):
    with open('douban.'+str(page)+'json','w',encodings='utf-8') as fp:
        fp.write(contents)



if __name__ == '__main__':

    utf_name=int(input('请输入开始页码'))
    last_name=int(input('请输入结束页码'))
    for page in range(utf_name,last_name+1): #左闭又开想要获取10页数据 10+1 11获取第10页数据
        #请求对象定制
        requerst=requert_get(page)
        #获取响应的数据
        contents=reqopne_get(requerst)
        #下载数据
        plase_get=(page,contents)
  • 写回答

4条回答 默认 最新

  • 亖夕 Python领域新星创作者 2022-07-16 17:49
    关注

    帮你改好了

    img

    img

    
    ```python
    import urllib.parse
    import urllib.request
    
    
    def requert_get(page):
        first_url = 'https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&'
        data = {
            'start': (page - 1) * 20,  # 根据上面规则start = (page-)*20. 所以我们需要实参page的值
            'limit': 20
        }
        data = urllib.parse.urlencode(data)
        url = first_url + data
        headers = {
            'User-Agent': ' Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49'
    
        }
        requerst = urllib.request.Request(url=url, headers=headers)
        return requerst
    
    
    def reqopne_get(requerst):
        content = urllib.request.urlopen(requerst)  # 模拟浏览器像服务器发送请求
        contents = content.read().decode('utf-8')
        return contents  # 返回contents的值
    
    
    def plase_get(page, contents):
        filename = 'douban.' + str(page) + 'json'
        with open(filename, 'w', encoding='utf-8') as fp:
            fp.write(contents)
        print('保存完成')
    
    
    if __name__ == '__main__':
    
        utf_name = int(input('请输入开始页码'))
        last_name = int(input('请输入结束页码'))
        for page in range(utf_name, last_name + 1):  # 左闭又开想要获取10页数据 10+1 11获取第10页数据
            # 请求对象定制
            requerst = requert_get(page)
            # 获取响应的数据
            contents = reqopne_get(requerst)
            # 下载数据
            plase_get(page, contents)
    
    
    

    ```

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 王鹏飞的解忧屋 2022-07-16 08:19
    关注

    你在22行下打印一下,看看有没有拿到数据,print输出一下contents

    评论
  • 十八岁讨厌编程 全栈领域优质创作者 2022-07-16 09:20
    关注

    headers里面多插入几个请求头试一下,比如referer

    评论
  • 渔戈 2022-07-16 13:38
    关注

    网站更新反爬了,代码失效就拿不到数据了

    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 7月24日
  • 已采纳回答 7月16日
  • 创建了问题 7月15日

悬赏问题

  • ¥15 我用C语言easyx图形库绘制了一个3d游戏方框透视,但进入游戏时候鼠标准星对准方框边缘 鼠标光标就会弹出来这是啥情况怎样让光标对准绘制的方框点击鼠标不弹出光标好烦这样
  • ¥20 用Power Query整合的问题
  • ¥20 基于python进行多背包问题的多值编码
  • ¥15 相同型号电脑与配置,发现主板有一台貌似缺少了好多元器件似的,会影响稳定性和使用寿命吗?
  • ¥15 要求编写稀疏矩阵A的转置矩阵的算法
  • ¥15 编写满足以下要求的停车场管理程序,设停车场只有一个可停放n辆车的狭窄通道且只有一个大门可供车辆进出。
  • ¥15 C语言:数据子序列基础版
  • ¥20 powerbulider 导入excel文件,显示不完整
  • ¥15 用keil调试程序保证结果进行led相关闪烁
  • ¥15 paddle训练自己的数据loss降不下去