【问题标题】:Scrapy CrawlerProcess not find correct dataScrapy CrawlerProcess 找不到正确的数据
【发布时间】:2020-12-20 09:58:25
【问题描述】:

我正在尝试在此 url 上搜索不同的 18 艘船(仅作为开始的第一页)。

但要这样做,我只想要可以在 div.col-6-12.mobile-col-1-1.envItem > article > data-product-url 中找到的船详细信息 url

为此,我执行了以下脚本:

import scrapy
from scrapy.crawler import CrawlerProcess

class QuotesSpider(scrapy.Spider):
    name = 'quotes'
    
    def parse(self, response):
        for boat in response.css('div.col-6-12.mobile-col-1-1.envItem'):
            yield {
                'url': boat.css('article::attr("data-product-url")').get()
            }
            
# run spider
process = CrawlerProcess()
process.crawl(QuotesSpider, start_urls = ['https://www.clickandboat.com/uk/boat-hire/search?where=Spain'])
process.start()

脚本正在运行,我收到了 18 个船只详细信息的 url,但它们属于不在我想要抓取的 url 第一页中的船只。

我做错了什么?如何获取我输入的 url 的船详细信息的 url 列表(可以在 div.col-6-12.mobile-col-1-1.envItem > article > data-product-url 中找到)上面?

【问题讨论】:

    标签: python python-3.x web-scraping scrapy


    【解决方案1】:

    使用这个 css 选择器获取数据:

    import scrapy
    from scrapy.crawler import CrawlerProcess
    
    class QuotesSpider(scrapy.Spider):
        name = 'quotes'
    
        def parse(self, response):
            for boat in response.css('div#product-list.productList'):
                yield {
                    'url': boat.css('div.col-6-12.mobile-col-1-1.envItem>article.boatAd.js-boatAd::attr("data-product-url")').getall()
                }
    
    # run spider
    process = CrawlerProcess()
    process.crawl(QuotesSpider, start_urls = ['https://www.clickandboat.com/uk/boat-hire/search?where=Spain'])
    process.start()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-14
      • 1970-01-01
      • 2015-06-11
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多