scrapy项目2:爬取智联招聘的金融类高端岗位(spider类)
---恢复内容开始---
今天我们来爬取一下智联招聘上金融行业薪酬在50-100万的职位。
第一步:解析解析网页
当我们依次点击下边的索引页面是,发现url的规律如下:
第1页:http://www.highpin.cn/zhiwei/ci_180000_180100_as_50_100.html
第2页:http://www.highpin.cn/zhiwei/ci_180000_180100_as_50_100_p_2.html
第3页:http://www.highpin.cn/zhiwei/ci_180000_180100_as_50_100_p_3.html
看到第三页时,用我小学学的数据知识,我便已经找到了规律,哈哈,相信大家也是!
接下来说说我要爬取的目标吧:
如下图:我想要得到的是:职位名称、薪资范围、工作地点、发布时间
借助谷歌的xpath我就着手解析和提取这些数据了,这里不做分析,在代码中体现
第二步:项目实现 通过 scrapy startproject zhilian创建项目,结构如下:
1. items.py
# -*- coding: utf-8 -*- # Define here the models for your scraped items # # See documentation in: # http://doc.scrapy.org/en/latest/topics/items.htmlimport scrapy class ZhilianItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()# 职位position = scrapy.Field()# 公司名称company = scrapy.Field()# 薪资salary = scrapy.Field()# 工作地点place = scrapy.Field()# 发布时间time = scrapy.Field()
2.爬虫文件:highpin.py 通过命令scrapy genspider highpin 'highpin.cn'创建
# -*- coding: utf-8 -*- import scrapy from zhilian.items import ZhilianItem class HighpinSpider(scrapy.Spider):# 爬虫名,创建文件时给定name = "highpin"allowed_domains = ["highpin.cn"]url = 'http://www.highpin.cn/zhiwei/ci_180000_180100_as_50_100'# 用于构造url的参数offset = 1start_urls = [url + '.html']def parse(self, response):# 用xpath对网页内容进行解析,返回的是一个选择器列表position_list = response.xpath('//div[@class="c-list-box"]/div/div[@class="clearfix"]')item = ZhilianItem()print '------------------------------'print len(position_list)print '-----------------------------------'for pos in position_list:# 这里的item对应于items.py文件中的字段item['position'] = pos.xpath('./div/p[@class="jobname clearfix"]/a/text()').extract()[0]item['company'] = pos.xpath('./div/p[@class="companyname"]/a/text()').extract()[0]item['salary'] = pos.xpath('./div/p[@class="s-salary"]/text()').extract()[0]item['place'] = pos.xpath('./div/p[@class="s-place"]/text()').extract()[0]item['time'] = pos.xpath('./div[@class="c-list-search c-wid122 line-h44"]/text()').extract()[0] yield itemif self.offset < 150:self.offset += 1# 构建下一个要爬取的urlurl = self.url + '_p_' + str(self.offset) + '.html'print url# 发送请求,并调用parse进行数据的解析处理yield scrapy.Request(url,callback=self.parse)
3.pipelines.py管道文件用于将数据存于本地
# -*- coding: utf-8 -*- # Define your item pipelines here # # Don't forget to add your pipeline to the ITEM_PIPELINES setting # See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html import json class ZhilianPipeline(object):def __init__(self):# 初始化是创建本地文件self.filename = open('position.json','w')def process_item(self, item, spider):将python数据通过dumps转换成json数据text = json.dumps(dict(item),ensure_ascii=False) + '\n'# 将数据写入文件self.filename.write(text.encode('utf-8'))return itemdef close_spider(self,spider):# 关闭文件self.filename.close()
4.settings.py文件
说明1:在settings.py中首先要配置管道文件,如下图:
说明2:USER_AGENT,起初我在settings中所使用的user-agent为:Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Mobile Safari/537.36
运行爬虫后,如下图:
如上图所示,服务器对我要访问的url做了重定向,复制重定向后的url到浏览器如下图:
显然,这个页面并没有我们想要的信息,这就是一种反扒策略
为了解决这个问题,我就试着将USER_AGENT 更换为:Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.
再次通过 scrapy crawl highpin启动爬虫,发现爬虫程序已可以正常爬取
5.启动爬虫 命令:scrapy crawl highpin
数据文件内容
---恢复内容结束---
转载于:https://www.cnblogs.com/houzichiguodong/p/9117092.html
scrapy项目2:爬取智联招聘的金融类高端岗位(spider类)相关推荐
- 实战案例 | Scrapy 集成Selenium爬取智联招聘数据
人生苦短,快学Python! 初学scrapy之后,发现就是效率对比于selenium和requests快了很多,那么问题来了,如果网站设置了反爬,比如User-Agent反爬,cookie反爬,IP ...
- scrapy使用之爬取智联招聘
智联招聘是通过动态加载文件获取数据,所以一开始解析的url不是网页的地址,而是json 文件,寻找json文件的方法.通过查看各个工作具体的网址得知规律:https://job.zhaopin.com ...
- Scrapy学习——爬取智联招聘网站案例
Scrapy学习--爬取智联招聘网站案例 安装scrapy 下载 安装 准备 分析 代码 结果 安装scrapy 如果直接使用pip安装会在安装Twisted报错,所以我们需要手动安装. 下载 安装s ...
- scrapy爬取智联招聘
我想分析下互联网行业全国招聘实习生的情况,通过爬取智联招聘,得到15467条数据,并导入Mysql 在items.py里: import scrapy from scrapy.http import ...
- xpath爬取智联招聘--大数据开发职位并保存为csv
先上项目效果图: 本次爬取的URL为智联招聘的网址:https://www.zhaopin.com/ 首先先登录上去,为了保持我们代码的时效性,让每个人都能直接运行代码出结果,我们要获取到我们登录上去 ...
- 克服反爬虫机制爬取智联招聘网站
一.实验内容 1.爬取网站: 智联招聘网站(https://www.zhaopin.com/) 2.网站的反爬虫机制: 在我频繁爬取智联招聘网站之后,它会出现以下文字(尽管我已经控制了爬虫的爬 ...
- python爬虫多url_Python爬虫实战入门六:提高爬虫效率—并发爬取智联招聘
之前文章中所介绍的爬虫都是对单个URL进行解析和爬取,url数量少不费时,但是如果我们需要爬取的网页url有成千上万或者更多,那怎么办? 使用for循环对所有的url进行遍历访问? 嗯,想法很好,但是 ...
- python爬取智联招聘网_python爬取智联招聘工作岗位信息
1 # coding:utf-8 2 # auth:xiaomozi 3 #date:2018.4.19 4 #爬取智联招聘职位信息 5 6 7 import urllib 8 from lxml i ...
- Python爬虫爬取智联招聘职位信息
目的:输入要爬取的职位名称,五个意向城市,爬取智联招聘上的该信息,并打印进表格中 #coding:utf-8 import urllib2 import re import xlwtclass ZLZ ...
最新文章
- 使用 GDB 调试多进程程序
- FastReport.net分组排序、打印顺序、分页、函数使用语法、数据块编辑
- Maven3.0.5代理nexus
- UI设计动效\动画素材模板|分层分步骤学习动效设计
- 正则表达式 贪婪与懒惰
- 区块链100讲:Vitalik Buterin-以太坊Casper惩罚条件的最小化
- 如果看了此文,你还不懂傅里叶变换,那就过来掐死我吧(完整版)
- HMM:隐马尔科夫模型 - 学习
- mysql数据库管理手册_CentOS MySQL 用户及数据库管理手册
- 连续整数--全国模拟(一)
- matlab语言与应用 10 数学问题的非传统解法
- 现代通信理论与新技术 - 填空自测
- mysql PT工具
- 麒麟案例 | 南浔电商领头羊+麒麟计划,碰撞出了企业下一个10年增长之路!
- 暮拾晨花,回望流年——我的2016
- 4K电视与4K显示器区别
- 【PySide6】三、设置系统托盘
- Inno Setup 打包脚本笔记
- matlab noise level,Matlab生成白噪声
- FineCMS 5 0 10漏洞集合