利用Scrapy框架爬取前途无忧招聘信息
利用Scrapy框架爬取前途无忧招聘信息
关于安装和命令使用可参考:https://docs.scrapy.org/en/1.7/intro/install.html
先创建项目和爬虫文件
分析网站
发现输入搜索内容跟url链接保持一致,且更换页数后的数字也跟url链接有关系(看url链接红线标识)
这样我们就可以通过修改url来选择性爬取所有页面的招聘信息
继续分析
这里直接显示了所有职位的数量,我们可以这个数字来确定要爬取的页数(一页有50个职位)。
总结思路:我们先通过输入的形式修改url来确定我们要搜索的职位,然后先爬取该搜索内容网站的职位数量,根据职位数量确定页数,再爬取所有页数的职位详情信息。代码如下
# -*- coding: utf-8 -*-
import scrapy
from urllib import parse
import urllib
import refrist = input("请输入职位")
frist = urllib.parse.quote(frist)class JobsSpider(scrapy.Spider):name = 'jobs'allowed_domains = ['51job.com']start_urls = ['https://search.51job.com/list/030200%252C040000,000000,0000,00,9,99,'+str(frist)+',2,1.html?']def parse(self, response):#抓取职位数量SL = response.xpath('//*[@id="resultList"]/div[2]/div[4]/text()').get(default='')SL = re.findall('共(.*?)条职位',SL)[0]#根据数量确定页数if int(SL) % 50 != 0:page = int(SL) // 50 + 1print(page)else:page = int(SL) // 50print(page)#通过修改url来爬取所有页面for i in range(1,page+1):url = 'https://search.51job.com/list/030200%252C040000,000000,0000,00,9,99,'+str(frist)+',2,{}.html?'.format(i)#print(url)yield scrapy.Request(url,callback=self.parseDetail)def parseDetail(self,response):#爬取职位详情页面的urlURL_list = response.xpath('//*[@id="resultList"]/div/p/span/a/@href').extract()for URL in URL_list:yield scrapy.Request(URL,callback=self.parseXX)def parseXX(self,response):#爬取详情信息ZW = response.xpath('/html/body/div[3]/div[2]/div[2]/div/div[1]/h1/text()').get(default='')GZ = response.xpath('/html/body/div[3]/div[2]/div[2]/div/div[1]/strong/text()').get(default='')GS = response.xpath('/html/body/div[3]/div[2]/div[2]/div/div[1]/p[1]/a[1]/text()').get(default='')YQ1 = response.xpath('/html/body/div[3]/div[2]/div[3]/div[1]/div//p/text()').extract()YQ2 = response.xpath('/html/body/div[3]/div[2]/div[3]/div[1]/div//span/text()').extract()YQ3 = response.xpath('/html/body/div[3]/div[2]/div[3]/div[1]/div/text()').extract()if len(YQ1) > 1:YQ = YQ1elif len(YQ2) > 1:YQ = YQ2elif len(YQ3) > 1:YQ = YQ3items = {"职位:":ZW,"工资:": GZ,"公司:":GS,"要求:":YQ}yield items
运行结果
这里保存为csv文件输出。
如果打开是乱码的话,用文本编辑器转换一下编码保存再打开就可以了
总共48个职位爬了47个,少了一个。我去看了一下运行记录有一个404的请求信息
复制链接在网页搜一下
利用Scrapy框架爬取前途无忧招聘信息相关推荐
- python爬虫利用Scrapy框架爬取汽车之家奔驰图片--实战
先看一下利用scrapy框架爬取汽车之家奔驰A级的效果图 1)进入cmd命令模式下,进入想要存取爬虫代码的文件,我这里是进入e盘下的python_spider文件夹内 C:\Users\15538&g ...
- 利用Scrapy框架爬取LOL皮肤站高清壁纸
利用Scrapy框架爬取LOL皮肤站高清壁纸 Lan 2020-03-06 21:22 81 人阅读 0 条评论 成品打包:点击进入 代码: 爬虫文件 # -*- coding: utf- ...
- python scrapy框架爬取知乎提问信息
前文介绍了python的scrapy爬虫框架和登录知乎的方法. 这里介绍如何爬取知乎的问题信息,并保存到mysql数据库中. 首先,看一下我要爬取哪些内容: 如下图所示,我要爬取一个问题的6个信息: ...
- python笔记之利用scrapy框架爬取糗事百科首页段子
环境准备: scrapy框架(可以安装anaconda一个python的发行版本,有很多库) cmd命令窗口 教程: 创建爬虫项目 scrapy startproject qq #创建了一个爬虫项目q ...
- 利用Scrapy框架爬取汽车之家图片(详细)
爬取结果 爬取步骤 创建爬虫文件 进入cmd命令模式下,进入想要存取爬虫代码的文件,我这里是进入e盘下的E:\pystudy\scraping文件夹内 C:\Users\wei>E:E:\> ...
- 利用scrapy框架爬取动态加载的数据
在爬取有些网站的是后,数据不一定全部是可视化界面的,当我们拖动滚动条时才会加载其他的数据,如果我们也想爬取这部分数据,就需要使用selenium模块,在scrapy里可以结合该模块修改返回对象 一.编 ...
- 利用Scrapy框架爬取落网上的音乐文件
今天爬取的是本人特别喜欢的一个音乐网站,www.luoo.net, 首先是设置item中需要保存的字段. items.py 字段名称包括期刊号,期刊名,期刊创建时间,单期期刊下的音乐名,作者名,音乐文 ...
- 利用scrapy框架爬取网易新闻排行榜
wyxw.py中代码 # -*- coding: utf-8 -*- import scrapy from ..items import WyxwItemclass WyxwSpider(scrapy ...
- Python爬虫实战+Scrapy框架 爬取当当网图书信息
1.环境准备 1.在python虚拟环境终端使用 pip install scrapy下载scrapy依赖库 2.使用scrapy startproject book创建scrapy心目工程 3.使用 ...
最新文章
- [书籍分享]0-003.你的灯亮着吗:发现问题的真正所在
- [PAT乙级]1029 旧键盘
- java aio socket_[Java]socket Aio demo
- 小程序解码时 php 7.0以上 mcrypt拓展无法使用 旧版本的解密解决方案 新版本在另外一篇文章
- 你是否还在写try-catch-finally?来使用try-with-resources优雅地关闭流吧
- Python爬虫书籍推荐
- 短视频平台、工具,新手在家用手机全程复制粘贴,一天收益247
- 大屏布局css,前端大屏项目的屏幕适配方案
- 数据库mysql+401.1_MySQL 数据库
- 根据股票涨跌用KMeans进行分类
- css实现多行文本时显示省略号
- 小学六年级人教版计算机书,小学数学六年级人教版
- 地理生物结业考_不到30天,初二学年地理、生物结业考试开考,老师们说……...
- 二级渠道分销系统开发适合什么样的产品?
- 第一节:linux 开发AI算法以及libtorch部署算法详细教程-环境搭建
- Planet比Google earth更好用的地图下载神器Basemaps Viewer不用写代码全球高清影像框选下载tif格式
- RESTful API 简介(学习笔记)
- 谷歌变坏了?Chrome 已成众矢之的
- appt命令检测Apk信息的方法
- Java拼图小游戏------《Java程序设计》课程设计
热门文章
- 从“颠覆医疗”到“拥抱医疗”,智慧医疗大数据到底应该怎么做
- 基于JAVA电子产品专卖电商系统计算机毕业设计源码+系统+lw文档+部署
- 香港理工大学计算机硕士2021,2021年香港理工大学知识及科技管理研究生录取案例一览-录取条件...
- 分布式架构 服务容器化Docker
- fft频谱 matlab,matlab流水线ADC仿真FFT频谱测试【求高手搭救】
- [转]语音辨识的常见问题集
- Windows10下python3和python2同时安装(二)python2.exe、python3.exe和pip2、pip3设置
- oracle中rowid列,Oracle中的rowid
- curl post参数问题
- python实现情感分析流程图_用python实现文本情感分析