首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从scrapy中的所有页面获取数据

无法从scrapy中的所有页面获取数据
EN

Stack Overflow用户
提问于 2020-10-15 12:54:41
回答 1查看 64关注 0票数 0

我不能获取所有页面使用下面的代码,它只给出数据到第90页,然后显示分配错误。我正在使用下一步按钮url移动到下一页。但是在第90页之后,它给出了我在下面提到的错误。

运行以下代码:

代码语言:javascript
复制
import scrapy
import re

class PaginationSpider(scrapy.Spider):
    name = 'pagination'
    allowed_domains = ['www.farfetch.com']
    start_urls = ['https://www.farfetch.com/de/shopping/men/shoes-2/items.aspx?page=1']

    total_pages_pattern = r'"totalPages":(\d+)'
    current_page_pattern = r"page=(\d+)"

    def parse(self, response):
        
        number_of_pages= int(re.search(self.total_pages_pattern, str(response.body)).group(1))
        current_page = int(re.search(self.current_page_pattern, response.url).group(1))
        
        for brand in response.xpath("//h3[@itemprop='brand']//text()"):

            yield {
                "brand":brand.get()
            }

        if current_page <= number_of_pages:

            next_page = "https://www.farfetch.com/de/shopping/men/shoes-2/items.aspx?page=" + str(current_page+1)
            
            print("Current_page:" + str(current_page))

            yield response.follow(url=next_page, callback=self.parse)

错误:

EN

回答 1

Stack Overflow用户

发布于 2020-10-16 23:04:27

代码语言:javascript
复制
    current_page = int(re.search(self.current_page_pattern, response.url).group(1))

如果模式与字符串匹配,re.search()方法将返回一个Re对象。如果没有匹配,它将返回None。因此,当模式不匹配时,您将在None中调用.group(1)

这就是为什么你会得到一个AttributeError

我没有执行你的代码,但是你可以通过添加一个if语句来解决这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64365094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档