崎cra的链接列表

时间:2020-10-13 18:38:16

标签: python scrapy

我正在用scrapy构建一个Spider,我想访问列表中的每个项目,然后在每个链接中获取所有数据。但是当我运行Spider时,它不会抓取数据。我想念的是什么?

from ..items import JobscraperItem
from scrapy.linkextractors import LinkExtractor



class JobscraperSpider(scrapy.Spider):
    name ='jobspider'
    start_urls = ['https://cccc/bolsa/ofertas?oferta=&lugar=&categoria=']

    def parse(self, response):
        job_detail = response.xpath('//div[@class="list"]/div/a')
        yield from response.follow_all(job_detail, self.parse_jobspider)

    def parse(self, response):
        items = JobscraperItem()

        job_title = response.xpath('//h1/text()').extract()
        company = response.xpath('//h2/b/text()').extract()
        company_url = response.xpath('//div[@class="pull-left"]/a/text()').extract()
        description = response.xpath('//div[@class="aviso"]/text()').extract()
        salary = response.xpath('//div[@id="aviso"]/p[1]/text()').extract()
        city = response.xpath('//div[@id="aviso"]/p[2]/text()').extract()
        district = response.xpath('//div[@id="aviso"]/p[5]/text()').extract()
        publication_date = response.xpath('//div[@id="publicado"]/text()').extract()
        apply = response.xpath('//p[@class="text-center"]/b/text()').extract()
        job_type = response.xpath('//div[@id="resumen"]/p[3]/text()').extract()

        items['job_title'] = job_title
        items['company'] = company
        items['company_url'] = company_url
        items['description'] = description
        items['salary'] = salary
        items['city'] = city
        items['district'] = district
        items['publication_date'] = publication_date
        items['apply'] = apply
        items['job_type'] = job_type

        yield items```

2 个答案:

答案 0 :(得分:1)

据我所见,问题之一是您要创建两个名为parse()的函数。由于您在第一个解析函数中使用的是self.parse_jobspider,因此我猜想您的第二个解析函数的名称不正确。

此外,您确定start_urls中的URL正确吗? https://cccc/bolsa/ofertas?oferta=&lugar=&categoria=不会定向到任何地方,这也可以解释为什么不抓取数据。

答案 1 :(得分:0)

   rules = (

        Rule(LinkExtractor(allow=('/bolsa/166',)), follow=True, callback='parse_item'),

    )

我解决了此问题,添加了此代码以访问每个链接并在其中抓取数据