首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Scrapy Spider

Scrapy Spider
EN

Stack Overflow用户
提问于 2018-03-25 20:42:43
回答 1查看 614关注 0票数 1

我正在尝试抓取亚马逊,但我获得的file.csv是空白的。看看我的代码:

代码语言:javascript
运行
复制
# -*- coding: utf-8 -*-
import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from scrapy.exceptions import CloseSpider
from mercado.items import MercadoItem


class MercadoSpider(CrawlSpider):
    name = 'mercado'
    item_count = 0
    allowed_domain = ['www.amazon.es']
    start_urls = ['https://www.amazon.es/s/ref=sr_st_price-asc-rank?keywords=febi+bilstein&rh=i%3Aaps%2Ck%3Afebi+bilstein&__mk_es_ES=%C3%85M%C3%85Z%C3%95%C3%91&qid=1521977786&sort=price-asc-rank']

    rules = {

        Rule(LinkExtractor(allow =(), restrict_xpaths = ('//*[@id="pagnNextString"]'))),
        Rule(LinkExtractor(allow =(), restrict_xpaths = ('//h2')),
                        callback = 'parse_item', follow = False)
    }


    def parse_item(self, response):
        ml_item = MercadoItem()

        #info de producto
        ml_item['articulo'] = response.xpath('//*[@id="result_0"]/div/div/div/div[2]/div[1]/div[1]/a/h2').extract()
        ml_item['precio'] = response.xpath('//*[@id="result_0"]/div/div/div/div[2]/div[2]/div[1]/div[1]/a/span[2]').extract()
        self.item_count += 1
        if self.item_count > 10:
            raise CloseSpider('item_exceeded')
        yield ml_item

我不知道为什么我得不到结果。你能帮我个忙吗?

EN

回答 1

Stack Overflow用户

发布于 2018-03-26 01:13:27

您的第二个LinkExtractor尝试提取h2元素中的所有链接。

要匹配所有包含h2元素的链接,可以使用像//a[h2]这样的xpath

修复之后,您将遇到parse_item中的xpath与任何内容都不匹配的问题,因此您也需要修复这些问题。

此外,为了在抓取一定数量的项目后关闭爬行器,还有CLOSESPIDER_ITEMCOUNT设置。

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

https://stackoverflow.com/questions/49475968

复制
相关文章

相似问题

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