【问题标题】:Can't grab the title of different listings from a webpage using scrapy无法使用scrapy从网页中获取不同列表的标题
【发布时间】:2020-11-01 15:02:32
【问题描述】:

我正在尝试从 webpage 解析不同列表的标题。标题不是动态的,因为它们在页面源中可用。但是,必须首先发送 cookie 来获取标题。我已经尝试使用以下方法来抓取列表的标题,但它似乎不起作用。

到目前为止我的尝试:

import scrapy
from scrapy.crawler import CrawlerProcess

class ControllerSpider(scrapy.Spider):
    name = 'controller'
    start_urls = [
        'https://www.controller.com/listings/aircraft/for-sale/list?SortOrder=23&scf=False&page=1'
    ]

    def start_requests(self):
        for i,url in enumerate(self.start_urls):
            yield scrapy.Request(url,meta={'cookiejar': i},callback=self.parse)
    
    def parse(self,response):
        for item in response.css(".listing-name > a[href]::text").getall():
            yield {"title":item}

if __name__ == "__main__":
    c = CrawlerProcess({
        'USER_AGENT': 'Mozilla/5.0 (Windows NT 6.1; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36',
    })
    c.crawl(ControllerSpider)
    c.start()

如何使用 cookie 从该网页中获取不同列表的标题?

PS 我不想硬编码 cookie。

【问题讨论】:

  • 我试过了,还是用selenium更好
  • 澄清一下,您为什么不想对 cookie 进行硬编码?
  • 如果我现在对 cookie 进行硬编码并运行脚本,我将获得成功。但是,当我在其他时间运行它时,除非我更新 cookie,否则我可能找不到脚本工作,因为 cookie 并不总是静态的。希望您了解我不想使用硬编码 cookie @zmike 的原因。谢谢。
  • 我同意@bigbounty 所说的:使用硒。另请注意,此特定网站似乎正在“翻新”,您可能更愿意在 beta.controller.com/listings/search 上编写预览的抓取过程

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


【解决方案1】:

如果您使用抓取浏览器扩展程序,则不必手动处理 cookie。正常访问该站点,从而获取 cookie,然后将其刮掉。

https://github.com/get-set-fetch/extension 是一个开源扩展,只需指定用于链接导航和内容提取的 CSS 选择器,即可处理您的场景。

我在网站上玩了一下,并为您创建了一个抓取配置,其中包含导航(下一页、飞机详细信息页面)和抓取(年份、型号、制造商、价格)所需的 CSS 选择器

“eLtI4gnapZQ9b8MgEIb / CuoQtQO4SZolktWta4Z2zELwYSNhjI5z3P77AmrS2ulH0gwI7OM9ne7eh + PVVH9qPKBQXXsCBRmywKSrWMxopGWub3eAR1YaIh / WRTEMg1CjVIU1gYyrQyENKpSaCt0hD9JCDj0 + d0gbrADLxXIWlC6fkhdmPjannI8ZrIF4iEsnYPghEA8oPfBoUTKKf3r4Gl7v / wPoVPcDAlPXj5BQjXQ1vHw1djblxgNmzsP0 + Tjb62JHjsfmt + kgHLxSRD5vqdlbV5m9 + JgWT7mZjPHD1PKdES2rKSzflnUuHKLl1Hk + XwmlmcBuWDtquGqMrW4Xd0wED4rvpe3TO / UGErfuN8lyKmml63Wsp0f4Q / pwIu3ihKLGo1Fw /菊/ bi4g9TIy3wGjz0AS” P>

在扩展里面做:新项目>配置哈希>粘贴上面的哈希(不带引号)>保存,刮,查看结果>导出为csv。

每个 csv 行都有年份、制造商、型号、价格。我设置了一些限制,因此只会抓取前 4 个结果页面,但您可以通过将相应的值设置为 -1 来禁用它。

免责声明:我是扩展作者。

【讨论】:

猜你喜欢
  • 2020-06-07
  • 2019-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-05
  • 2021-12-07
  • 2012-03-18
  • 1970-01-01
相关资源
最近更新 更多