gpt4 book ai didi

python - Scrapy 不抓取任何页面

转载 作者:太空宇宙 更新时间:2023-11-04 02:07:08 25 4
gpt4 key购买 nike

我正在抓取网站 https://oa.mo.gov/personnel/classification-specifications/all .我需要进入每个位置页面,然后提取一些信息。我认为我可以使用 LinkExtractor 或通过使用 xPath 查找所有 URL 来完成此操作,这是我在下面尝试的。蜘蛛没有显示任何错误,但也没有抓取任何页面:

import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from StateOfMoJDs.items import StateOfMoJDs

class StateOfMoJDs(scrapy.Spider):
name = 'StateOfMoJDs'
allowed_domains = ['oa.mo.gov']
start_urls = ['https://oa.mo.gov/personnel/classification-specifications/all']

def parse(self, response):
for url in response.xpath('//span[@class="field-content"]/a/@href').extract():
url2 = 'https://oa.mo.gov' + url
scrapy.Request(url2, callback=self.parse_job)


def parse_job(self, response):
item = StateOfMoJDs()
item["url"] = response.url
item["jobtitle"] = response.xpath('//span[@class="page-title"]/text()').extract()
item["salaryrange"] = response.xpath('//*[@id="class-spec-compact"]/div/div[1]/div[2]/div[1]/div[2]/div/text()').extract()
item["classnumber"] = response.xpath('//*[@id="class-spec-compact"]/div/div[1]/div[1]/div[1]/div/div[2]/div//text()').extract()
item["paygrade"] = response.xpath('//*[@id="class-spec-compact"]/div/div[1]/div[3]/div/div[2]/div//text()').extract()
item["definition"] = response.xpath('//*[@id="class-spec-compact"]/div/div[2]/div[1]/div[2]/div/p//text()').extract()
item["jobduties"] = response.xpath('//*[@id="class-spec-compact"]/div/div[2]/div[2]/div[2]/div/div//text()').extract()
item["basicqual"] = response.xpath('//*[@id="class-spec-compact"]/div/div[3]/div[1]/div/div//text()').extract()
item["specialqual"] = response.xpath('//*[@id="class-spec-compact"]/div/div[3]/div[2]/div[2]/div//text()').extract()
item["keyskills"] = response.xpath('//*[@id="class-spec-compact"]/div/div[4]/div/div[2]/div/div//text()').extract()
yield item

当使用 scrapy shell 时,response.xpath('//span[@class="field-content"]/a/@href').extract() 产生一个逗号分隔的列表相对 URL:

['/personnel/classification-specifications/3005', '/personnel/classification-specifications/3006', '/personnel/classification-specifications/3007', ...]

最佳答案

在您的parse() 方法中,您需要yield 您的请求:

yield scrapy.Request(url2, callback=self.parse_job)

关于python - Scrapy 不抓取任何页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54425461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com