python代码实现:采集Java工程师招聘的前三页数据,包括职位名称、工作区域地点、工资待遇,网址:https://www.liepin.com/zhaopin/?d_sfrom=search_sub_site&key=java&imscid=R000000035; 输出结果中增加数据的页码和序号; 使用Scrapy框架,不使用其他爬虫插件包和技术。
时间: 2023-12-06 22:41:47 浏览: 171
很高兴为您解答这个问题。这里是一个基本的Scrapy代码实现,来采集Java工程师招聘的前三页数据。您可以根据您的需要进行修改。
```python
import scrapy
class LiepinSpider(scrapy.Spider):
name = 'liepin'
allowed_domains = ['www.liepin.com']
start_urls = ['https://www.liepin.com/zhaopin/?d_sfrom=search_sub_site&key=java&imscid=R000000035']
def parse(self, response):
# 获取页面上所有职位链接
job_links = response.css('div.job-info h3 a::attr(href)').getall()
# 循环遍历职位链接,通过parse_job函数获取详细职位信息
for link in job_links:
yield scrapy.Request(link, callback=self.parse_job)
# 判断是否有下一页,如果有则继续采集
next_page = response.css('div.pager a.next::attr(href)').get()
if next_page and 'pageidx=3' not in next_page:
yield scrapy.Request(next_page, callback=self.parse)
def parse_job(self, response):
# 获取职位名称
job_title = response.css('div.title-info h1::text').get()
# 获取工作区域地点
job_location = response.css('div.job-title-left p.basic-infor span::text').get()
# 获取工资待遇
job_salary = response.css('p.job-item-title span::text').get()
# 输出结果
item = {
'page': response.url.split('page=')[1].split('&')[0],
'num': response.url.split('curPage=')[1].split('&')[0],
'title': job_title,
'location': job_location,
'salary': job_salary
}
yield item
```
在这个代码中,我们定义了一个Scrapy Spider,名为LiepinSpider。在start_urls中,我们指定了要开始采集的URL。在parse函数中,我们获取了页面上所有职位链接,然后循环遍历这些链接,通过parse_job函数获取详细职位信息。最后,我们判断页面是否有下一页,如果有则继续采集。在parse_job函数中,我们获取职位名称、工作区域地点和工资待遇,并输出结果。
您可以将这个代码保存为一个Python文件,比如liepin_spider.py。在命令行中,进入到这个文件所在的目录,然后输入以下命令来运行这个爬虫:
```
scrapy runspider liepin_spider.py -o jobs.csv
```
这个命令将会运行我们的爬虫,并将结果保存到jobs.csv文件中。在这个文件中,您将会看到所有采集到的职位信息,包括职位名称、工作区域地点、工资待遇、页码和序号。
阅读全文