【问题标题】:Scrapy not working on patta siteScrapy 在 patta 网站上不起作用
【发布时间】:2018-02-27 18:56:21
【问题描述】:

我正在尝试在 patta.nl 上使用 scrapy-spider 从最新产品中获取所有产品并将它们存储到数据库中。

我的监视器中的某些站点正在运行,但是诸如 Patta 之类的站点无法运行,并且没有将任何内容上传到数据库。 这是我的功能:

class PattaSpider(Spider):

name = "PattaSpider"
allowded_domains = ["patta.nl"]
start_urls = [PattaURL]

def __init__(self):
    logging.critical("Patta STARTED.")

def parse(self, response):
    products = Selector(response).xpath('//ul[@class="products-grid EqualRow grid-4-columns label-type-2 top-right first last odd isotope"]')

    for product in products:
        item = PattaItem()
        item['name'] = product.xpath('//h3[@class="product-name"]/a').extract_first()
        item['link'] = product.xpath('//h3[@class="product-name"]/a/@href').extract_first()
        yield item

    yield Request(PattaURL, callback=self.parse, dont_filter=True, priority=3)

有人可以帮我解决这个问题吗?谢谢

【问题讨论】:

  • 包含您尝试抓取的确切网址可能是个好主意。
  • @stranac startURL 是正确的 URL :)
  • PattaURL 并没有告诉我们 url 实际上是什么,我们需要能够测试代码才能调试它。
  • @stranac 你是对的,但它是在 3 个不同文件中实现的代码,明天早上我会上传一些代码

标签: python-2.7 scrapy web-crawler scrapy-spider


【解决方案1】:

您的代码有几个问题:

  1. 您的products 只是一个ul
  2. 您在ul 中使用了错误的@class(检查源HTML 代码)
  3. 您需要为每个项目使用相对 XPath 表达式

    products = response.xpath('//ul[contains(@class,"products-grid")]/li')
    
    for product in products:
        item = PattaItem()
        item['name'] = product.xpath('.//h3[@class="product-name"]/a/text()').extract_first()
        item['link'] = product.xpath('.//h3[@class="product-name"]/a/@href').extract_first()
        yield item
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    相关资源
    最近更新 更多