+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Scrapy Debug:重定向301以获取

发布于2021-01-12 03:21     阅读(1020)     评论(1)     点赞(16)     收藏(0)


0

1

2

3

4

5

写完我的第一个“递归”之后 蜘蛛,我遇到了一些问题,我整天无法固定..

我做了研究,可能会导致301错误,但是我尝试过的每个解决方案都没有帮助我。

我的控制台输出 控制台输出

我修改的settings.py

USER_AGENT = 'kartonage (Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0)'
DOWNLOAD_DELAY = 0.5
HTTPERROR_ALLOW_ALL = True

这个user_Agent和httperror_allow_all是针对其他人的一些解决方案,其重定向的301错误

我修改过的items.py

import scrapy


class KartonageItem(scrapy.Item):
    SKU = scrapy.Field()
    Title = scrapy.Field()
    Link = scrapy.Field()
    Price = scrapy.Field()
    Delivery_Status = scrapy.Field()
    Weight = scrapy.Field()
    QTY = scrapy.Field()
    Volume = scrapy.Field()

我使用的代码

import scrapy
from ..items import KartonageItem

class KartonSpider(scrapy.Spider):
    name = "kartons12"
    allow_domains = ['karton.eu']
    start_urls = [
        'https://www.karton.eu/Faltkartons'
        ]
    custom_settings = {'FEED_EXPORT_FIELDS': ['SKU', 'Title', 'Link', 'Price', 'Delivery_Status', 'Weight', 'QTY', 'Volume'] } 
    
    def parse(self, response):
        url = response.xpath('//div[@class="cat-thumbnails"]')

        for a in url:
            link = a.xpath('a/@href')
            yield response.follow(url=link.get(), callback=self.parse_category_cartons)

    def parse_category_cartons(self, response):
        url2 = response.xpath('//div[@class="cat-thumbnails"]')

        for a in url2:
            link = a.xpath('a/@href')
            yield response.follow(url=link.get(), callback=self.parse_target_page)

    def parse_target_page(self, response):
        card = response.xpath('//div[@class="text-center articelbox"]')

        for a in card:
            items = KartonageItem()
            link = a.xpath('a/@href')
            items ['SKU'] = a.xpath('.//div[@class="delivery-status"]/small/text()').get()
            items ['Title'] = a.xpath('.//h5[@class="title"]/a/text()').get()
            items ['Link'] = a.xpath('.//h5[@class="text-center artikelbox"]/a/@href').extract()
            items ['Price'] = a.xpath('.//strong[@class="price-ger price text-nowrap"]/span/text()').get()
            items ['Delivery_Status'] = a.xpath('.//div[@class="signal_image status-2"]/small/text()').get()
            yield response.follow(url=link.get(),callback=self.parse_item, meta={'items':items})

    def parse_item(self,response):
        table = response.xpath('//span[@class="product-info-inner"]')

        items = KartonageItem()
        items = response.meta['items']
        items['Weight'] = a.xpath('.//span[@class="staffelpreise-small"]/text()').get()
        items['Volume'] = a.xpath('.//td[@class="icon_contenct"][7]/text()').get()
        yield items

解决方案


HTTP 301不是错误,它是对“永久移动”的响应它会自动将您重定向到该页面的新地址。您可以在执行日志中看到已重定向。

本身不应该是一个问题。这可能还会引起其他情况吗?蜘蛛有任何意外的行为吗?

0

1

2

3

4

5

6

7



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接: https://www.pythonheidong.com/blog/article/758756/c1704055aca147e1364b/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

16 0
收藏该文
已收藏
  • #1楼    2021-01-13 20:55    15617858320 回复

    在seetings.py 中添加一条设置 或许有用: MEDIA_ALLOW_REDIRECTS =True

评论内容:(最多支持255个字符)