XiaMiZ 发表于 2020-6-27 13:25:03

代码已贴出,请大佬们看一看

    def parse(self, response):
            #获取当前爬取的榜单
      rank_tab=response.xpath('//ul[@class="rank-tab"]/li[@class="active"]/text()').getall()
      print('='*50,'当前爬取榜单为:',rank_tab,'='*50)

      #视频的信息都放在li标签中,这里先获取所有的li标签
      #之后遍历rank_lists获取每个视频的信息
      rank_lists=response.xpath('//ul[@class="rank-list"]/li')
      for rank_list in rank_lists:
            rank_num=rank_list.xpath('div[@class="num"]/text()').get()
            title=rank_list.xpath('div/div[@class="info"]/a/text()').get()
            # 抓取视频的url,切片后获得视频的id
            id=rank_list.xpath('div/div[@class="info"]/a/@href').get().split('/av')[-1]
            # 拼接详情页api的url
            Detail_link=f'https://api.bilibili.com/x/web-interface/archive/stat?aid={id}'
            Labels_link=f'https://api.bilibili.com/x/web-interface/view/detail/tags?aid={id}'
            author=rank_list.xpath('div/div[@class="info"]/div[@class="detail"]/a/span/text()').get()
            score=rank_list.xpath('div/div[@class="info"]/div[@class="pts"]/div/text()').get()


运行结果:2020-06-27 13:21:06 DEBUG: Crawled (404) <GET https://api.bilibili.com/x/web-interface/view/detail/tags?aid=https://www.bilibili.com/video/BV1Rz4y1Q7tg> (referer: https://www.bilibili.com/ranking/all/0/0/30)
2020-06-27 13:21:06 INFO: Ignoring response <404 https://api.bilibili.com/x/web-interface/view/detail/tags?aid=https://www.bilibili.com/video/BV1Rz4y1Q7tg>: HTTP status code is not handled or not allowed


本来"aid="应该接一串数字(B站爬取视频的id)但这里却是一个很长的网址,然后导致无法正确访问,请各位大佬看看是哪里出了问题

小甲鱼的铁粉 发表于 2020-6-27 13:29:27

是因为b站的反爬吗?

小甲鱼的铁粉 发表于 2020-6-27 13:30:00

小甲鱼的铁粉 发表于 2020-6-27 13:29
是因为b站的反爬吗?

我也不懂{:10_297:}

XiaMiZ 发表于 2020-6-27 13:31:55

小甲鱼的铁粉 发表于 2020-6-27 13:29
是因为b站的反爬吗?

貌似不是

liuzhengyuan 发表于 2020-6-27 13:33:13

应该你你的连接搞错了,所以 报错信息为 404

XiaMiZ 发表于 2020-6-27 13:34:50

liuzhengyuan 发表于 2020-6-27 13:33
应该你你的连接搞错了,所以 报错信息为 404

是的,就是链接的问题,但不知道怎么解决

suchocolate 发表于 2020-6-27 14:06:06

代码和报错都贴全,具体哪行产生的报错的都看不出来。
页: [1]
查看完整版本: 代码已贴出,请大佬们看一看