用scrapy写一段爬取boss直聘上海地区职位信息的代码并导出excel表格
时间: 2024-01-24 19:20:32 浏览: 154
使用Scrapy抓取职位招聘数据-爬虫python代码
5星 · 资源好评率100%
以下是一个简单的爬取boss直聘上海地区职位信息并导出excel表格的示例代码:
```python
import scrapy
import json
import pandas as pd
class BossSpider(scrapy.Spider):
name = 'boss'
allowed_domains = ['www.zhipin.com']
start_urls = ['https://www.zhipin.com/c101020100-p100101/']
def parse(self, response):
# 获取职位信息列表
jobs = response.xpath('//div[@class="job-list"]/ul/li')
for job in jobs:
# 解析职位信息
job_title = job.xpath('./div[@class="job-title"]/text()').get()
company_name = job.xpath('./div[@class="company-text"]/h3/a/text()').get()
salary = job.xpath('./div[@class="job-limit clearfix"]/span/text()').get()
job_url = job.xpath('./div[@class="info-primary"]/h3/a/@href').get()
# 访问职位详情页,获取更多职位信息
yield scrapy.Request(job_url, callback=self.parse_job_detail, meta={
'job_title': job_title,
'company_name': company_name,
'salary': salary
})
# 翻页
next_page_url = response.xpath('//a[@ka="page-next"]/@href')
if next_page_url:
yield scrapy.Request(response.urljoin(next_page_url.get()), callback=self.parse)
def parse_job_detail(self, response):
# 获取职位要求、公司介绍等信息
job_desc = response.xpath('//div[@class="job-sec"]/div[@class="text"]/text()')
job_desc = '\n'.join(job_desc.getall()).strip()
company_info = response.xpath('//div[@class="job-sec company-info"]/div[@class="text"]/text()')
company_info = '\n'.join(company_info.getall()).strip()
# 获取meta传递的职位信息
job_title = response.meta['job_title']
company_name = response.meta['company_name']
salary = response.meta['salary']
# 导出数据到excel表格
data = {
'职位名称': [job_title],
'公司名称': [company_name],
'薪资待遇': [salary],
'职位描述': [job_desc],
'公司介绍': [company_info],
}
df = pd.DataFrame(data)
df.to_excel('boss.xlsx', index=False, header=False, mode='a')
```
这段代码使用了Scrapy框架,通过XPath解析HTML页面,并使用pandas库将数据导出到excel表格中。您需要安装Scrapy和pandas库才能运行该代码,可以使用以下命令进行安装:
```
pip install scrapy pandas
```
在运行该代码前,您需要根据您的需求修改`start_urls`和`allowed_domains`变量来指定您要爬取的网站。同时,您也可以根据需要修改数据导出的文件名和数据字段。
阅读全文