无法使用scrapy从网页中获取不同列表的标题

2024-09-28 05:20:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从这个webpage解析不同列表的标题。标题不是动态的,因为它们在页面源代码中可用。然而,首先需要发送cookies来获取标题。我试过用下面的方法来抓取列表的标题,但似乎不起作用

我迄今为止的努力:

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()

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

PS我不想硬编码cookies


Tags: nameimportselfurl标题列表fordef
1条回答
网友
1楼 · 发布于 2024-09-28 05:20:14

如果您使用的是“刮削”浏览器扩展,则不必手动处理cookie。正常访问站点,从而获取cookies,然后将其刮掉

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

我对该网站进行了一些操作,为您创建了一个刮削配置,其中包含导航(下一页,飞机详细信息页)和刮削(年份、型号、制造商、价格)所需的CSS选择器

"4.这个词的意思是指一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一GQMRW4XD04RVPe3TO/UGErfuN8lyKmml63Wsp0f4Q/pwIu3ihKLGo1Fw/Ju/bi4g9TIy3wGjz0AS”

在扩展do:new project内>;config hash>;粘贴上述哈希(不带引号)>;保存、刮取、查看结果>;导出为csv

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

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

相关问题 更多 >

    热门问题