m0_59984072 2022-01-07 10:54 采纳率: 75%
浏览 44
已结题

哪里有问题,帮我看看?

import requests

第一页

https://www.dy2018.com/2/index_1.html

第二页

https://www.dy2018.com/2/index_2.html

第三页

https://www.dy2018.com/2/index_3.html

class DYspider:
"""
电影天堂爬虫
功能:动作片前五页的内容保存
"""
def init(self) :
# 1.请求构造地址
self.url = "https://www.dy2018.com/2/index_{}.html"
def get_response(self,url):
response = requests.get(url).content.decode()
return response

def save_page(self, content, page_num):
    """保存页面"""
    file_name = f"第{page_num}页.html"
    with open(f'./电影天堂/{file_name}', 'w', encoding='utf-8') as f:
        # 写入文件
        f.write(content)

def run(self, page=5):
    """爬虫启动函数"""
    # 1. 构造地址
    for pn in range(page):
        # pn的取值0 1 2 3 4
        url = self.url.format(pn+1)
        # 发送请求并获取响应
        content = self.get_response(url)
        # 保存全站内容
        self.save_page(content, pn + 1)

if name == "main":
# 实例化
DYspider().run()
import requests

第一页

https://www.dy2018.com/2/index_1.html

第二页

https://www.dy2018.com/2/index_2.html

第三页

https://www.dy2018.com/2/index_3.html

class DYspider:
"""
电影天堂爬虫
功能:动作片前五页的内容保存
"""
def init(self) :
# 1.请求构造地址
self.url = "https://www.dy2018.com/2/index_{}.html"
def get_response(self,url):
response = requests.get(url).content.decode()
return response

def save_page(self, content, page_num):
    """保存页面"""
    file_name = f"第{page_num}页.html"
    with open(f'./电影天堂/{file_name}', 'w', encoding='utf-8') as f:
        # 写入文件
        f.write(content)

def run(self, page=5):
    """爬虫启动函数"""
    # 1. 构造地址
    for pn in range(page):
        # pn的取值0 1 2 3 4
        url = self.url.format(pn+1)
        # 发送请求并获取响应
        content = self.get_response(url)
        # 保存全站内容
        self.save_page(content, pn + 1)

if name == "main":
# 实例化
DYspider().run()

  • 写回答

1条回答 默认 最新

  • CSDN专家-showbo 2022-01-07 11:12
    关注

    requests.get(url).content.decode()这句要加上headers,来源和user-agent要加上,要不被反扒获取不到数据。用gbk解码内容,第一页网址也有问题,需要判断下是否第一页,改下面就可以了

    img

    import requests
    class DYspider:
        def __init__(self):
    # 1.请求构造地址
            self.url = "https://www.dy2018.com/2/index_{}.html"
        def get_response(self,url):
            response = requests.get(url,headers={
            'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62',
            'referer':url
            }).content.decode('gbk')#用gbk解码
    
            return response
    
        def save_page(self, content, page_num):
            file_name = f"第{page_num}页.html"
            with open(f'./电影天堂/{file_name}', 'w', encoding='utf-8') as f:
            # 写入文件
                f.write(content)
     
        def run(self, page=5):
        # 1. 构造地址
            for pn in range(page):
            # pn的取值0 1 2 3 4
                if pn==0:
                    url = self.url.replace('_{}','')#没有index_1.html这种链接,会404
                else:
                    url = self.url.format(pn+1)
    
            # 发送请求并获取响应
                content = self.get_response(url)
            # 保存全站内容
                self.save_page(content, pn + 1)
    
    if __name__ == "__main__":
    # 实例化
        DYspider().run()
    
    
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题