【问题标题】:Why is scrapy returning None for the "Title" item?为什么scrapy为“Title”项目返回None?
【发布时间】:2021-03-28 20:24:25
【问题描述】:

我正在尝试抓取https://www.jobs.ch/de/stellenangebote/administration-hr-consulting-ceo/,目前我被困在那里,因为scrapy 为“Title”项目返回 None,这是作业名称。 css 选择器在 shell 中工作正常,其他项目也工作。我尝试更改选择器或添加延迟,但似乎没有任何效果。有人有想法吗?代码如下。

import scrapy
from jobscraping.items import JobscrapingItem


class GetdataSpider(scrapy.Spider):
    name = 'getdata2'
    start_urls = ['https://www.jobs.ch/de/stellenangebote/administration-hr-consulting-ceo/']

    def parse(self, response):
        for add in response.css('div.sc-AxiKw.VacancySerpItem__ShadowBox-qr45cp-0.hqhfbd'):
            item = JobscrapingItem()
            addpage = response.urljoin(add.css('div.sc-AxiKw.VacancySerpItem__ShadowBox-qr45cp-0.hqhfbd a::attr(href)').get())
            item['link'] = addpage


            request = scrapy.Request(addpage, callback=self.get_addinfos)
            request.meta['item'] = item
            yield request

    def get_addinfos(self, response):
        item = response.meta['item']
        item['Title'] = response.css('.sc-AxhUy.Text__h2-jiiyzm-1.eBKnmN.sc-fzqNJr.Text__span-jiiyzm-8.Text-jiiyzm-9.iNTZsv::text').get()
        item['Company'] = response.css('span.sc-fzqNJr.Text__span-jiiyzm-8.kGLBca.sc-fzqNJr.Text__span-jiiyzm-8.Text-jiiyzm-9.kjfvVS::text').get()
        item['Location'] = response.css('span.sc-fzqNJr.Text__span-jiiyzm-8.kGLBca.sc-fzqNJr.Text__span-jiiyzm-8.Text-jiiyzm-9.WBPTt::text').getall()
        yield item

这是 items.py 文件:

import scrapy


class JobscrapingItem(scrapy.Item):
    # define the fields for your item here like:
    link = scrapy.Field()
    Title = scrapy.Field()
    Company = scrapy.Field()
    Location = scrapy.Field()

【问题讨论】:

    标签: python scrapy


    【解决方案1】:

    您正在使用更复杂的 CSS 选择器。请记住,您不必总是使用类或 id。 Yuo 可以使用其他属性,例如在这种情况下data-cy="vacancy-title" 似乎很完美。

    item['Title'] = response.css('h1[data-cy="vacancy-title"]::text').get()

    应该可以。如果出现问题,以后可以轻松调试和更改。

    【讨论】:

    • 谢谢!我不知道属性选择器。
    • 您也可以对其他选择器尝试相同的操作。我没有费心检查其他人,但您绝对可以简化它们。
    猜你喜欢
    • 2013-03-05
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    • 2016-06-20
    • 1970-01-01
    相关资源
    最近更新 更多