用scrapy框架写一个爬取boss直聘上海地区岗位信息的代码
时间: 2024-06-08 22:05:47 浏览: 141
好的,以下是一个简单的爬取boss直聘上海地区岗位信息的代码,使用了Scrapy框架:
```python
import scrapy
class BossSpider(scrapy.Spider):
name = 'boss'
allowed_domains = ['www.zhipin.com']
start_urls = ['https://www.zhipin.com/c101020100/?query=python&page=1']
def parse(self, response):
# 获取岗位信息列表
job_list = response.xpath('//div[@class="job-list"]/ul/li')
for job in job_list:
# 获取岗位名称
job_name = job.xpath('div/div[1]/h3/a/div/text()').extract_first()
# 获取公司名称
company_name = job.xpath('div/div[2]/div/h3/a/text()').extract_first()
# 获取薪资
salary = job.xpath('div/div[1]/h3/a/span/text()').extract_first()
# 获取工作地点
location = job.xpath('div/div[1]/p/text()[2]').extract_first()
# 获取岗位描述链接
job_url = job.xpath('div/div[1]/h3/a/@href').extract_first()
yield scrapy.Request(job_url, callback=self.parse_job_detail, meta={
'job_name': job_name,
'company_name': company_name,
'salary': salary,
'location': location,
})
# 获取下一页链接
next_url = response.xpath('//div[@class="page"]/a[@class="next"]/@href')
if next_url:
yield scrapy.Request(next_url.extract_first(), callback=self.parse)
def parse_job_detail(self, response):
# 获取岗位描述
job_desc = response.xpath('//div[@class="job-detail"]/div[1]/div/text()').extract()
# 输出岗位信息
yield {
'job_name': response.meta['job_name'],
'company_name': response.meta['company_name'],
'salary': response.meta['salary'],
'location': response.meta['location'],
'job_desc': job_desc,
}
```
这个爬虫会从boss直聘上爬取所有上海地区的Python岗位信息,包括岗位名称、公司名称、薪资、工作地点和岗位描述。同时,它会自动翻页并爬取所有的岗位信息。
阅读全文