# 导入必要的模块
import scrapy
class LagouSpider(scrapy.Spider):
name = 'lagou'
allowed_domains = ['lagou.com']
start_urls = ['https://www.lagou.com/jobs/list_%E6%B5%8B%E8%AF%95?labelWords=label']
# 解析列表页的方法
def parse(self, response):
# 提取每个职位的详情页URL
urls = response.css('.position_link::attr(href)').getall()
for url in urls:
yield response.follow(url, self.parse_detail)
# 提取下一页的URL并进行爬取
next_page_url = response.css('.pager_next::attr(href)').get()
if next_page_url:
yield response.follow(next_page_url, self.parse)
# 解析详情页的方法
def parse_detail(self, response):
item = {
'job_title': response.css('.job-name::text').get(),
'company_name': response.css('.company_name::text').get(),
'salary': response.css('.salary::text').get(),
'city': response.css('.work_addr::text').get(),
'experience_edu': response.css('.detail-company li::text').getall(),
'job_desc': response.css('.job-detail::text').getall(),
}
yield item
这段代码修复了原代码中的错误,并且提供了一个简洁的爬虫示例,用于从拉勾网提取职位信息。它定义了一个名为LagouSpider
的爬虫类,包括了爬取列表页和详情页的方法,并且使用scrapy.Spider
作为基类。这个爬虫会根据提取到的URL进行页面爬取,并通过yield
返回解析后的数据项。