我正在用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```
答案 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'),
)
我解决了此问题,添加了此代码以访问每个链接并在其中抓取数据