爬取招聘信息并保存到xlsx

爬虫实现
定义数据(第一步)先知道自己要什么数据再去爬取

import scrapyclass JobuiItem(scrapy.Item):company=scrapy.Field()#定义公司名称的数据属性position = scrapy.Field()#定义职位名称的数据属性address = scrapy.Field()#定义工作地点的数据属性detail = scrapy.Field()#定义招聘要求的数据属性
编辑爬虫(第二步)


新加爬虫文件

import scrapy
import bs4
from ..items import JobuiItemclass JobuiSpider(scrapy.Spider):name='jobui'#名字要对应setting文件里的BOT_NAME字段,不然编译报错allowed_domins=["https://www.jobui.com"]#定义允许爬虫爬取网址的域名——职友集网站的域名start_urls=['https://www.jobui.com/rank/company/']#定义起始网址——职友集企业排行榜的网址def parse(self,response):#parse是默认处理response的方法bs=bs4.BeautifulSoup(response.text,'html.parser')#用BeautifulSoup解析response(企业排行榜的网页源代码)ul_list=bs.find_all('ul',class_='textList flsty cfix')for ul in ul_list:a_list=ul.find_all('a')for a in a_list:company_id=a['href']url='https://www.jobui.com{id}jobs'real_url=url.format(id=company_id)yield scrapy.Request(real_url,callback=self.parse_job)def parse_job(self,response):bs=bs4.BeautifulSoup(response.text,'html.parser')company=bs.find(id="companyH1").textdatas=bs.find_all("div",class_='c-job-list')for data in datas:item=JobuiItem()item['company']=companyitem['position']=data.find('h3').textitem['address']=data.find(class_='job-desc').find('span').textitem['detail']=data.find_all('span')[1].textyield item

代码该位置需要根据实际网页情况获取数据
yield 的意思相当于return 返回的意思,每次有新的item对象生成,也就是每次循环,新的数据请求回来都会返回一个新的item到引擎,也是每一行的数据的意思,callback函数是说,执行完了这个请求再执行的函数,思想可以参考前端的ajax请求,都是等待请求完成之后做的动作

配置文件的设置setting.py

FEED_URI='./storage/data/%(name)s.csv'
FEED_FORMAT='CSV'
FEED_EXPORT_ENCODING='ansi'
FEED_URI是导出文件的路径。’./storage/data/%(name)s.csv’,就是把存储的文件放到与settings.py文件同级的storage文件夹的data子文件夹里。
FEED_FORMAT 是导出数据格式,写CSV就能得到CSV格式。
FEED_EXPORT_ENCODING 是导出文件编码,ansi是一种在windows上的编码格式,你也可以把它变成utf-8用在mac电脑上。

上面配置没有设置过,所以保存数据的xlsx表,保存在setting的同级文件

#取消`ITEM_PIPELINES`的注释后:# Configure item pipelines
# See https://doc.scrapy.org/en/latest/topics/item-pipeline.html
ITEM_PIPELINES = {'jobuitest.pipelines.JobuitestPipeline': 300,
}
文件存储编写
import openpyxlclass JobuiPipeline(object):
#定义一个JobuiPipeline类,负责处理itemdef __init__(self):#初始化函数 当类实例化时这个方法会自启动self.wb=openpyxl.Workbook()#创建工作薄self.ws=self.wb.active#定位活动表self.ws.append(['公司','职位','地址','招聘信息'])#用append函数往表格添加表头def process_item(self,item,spider):#process_item是默认的处理item的方法,就像parse是默认处理response的方法line=[item['company'],item['position'],item['address'],item['detail']]#把公司名称、职位名称、工作地点和招聘要求都写成列表的形式,赋值给lineself.ws.append(line)#用append函数把公司名称、职位名称、工作地点和招聘要求的数据都添加进表格return itemdef close_spider(self,spider):#close_spider是当爬虫结束运行时,这个方法就会执行self.wb.save('./jobui.xlsx')#保存文件self.wb.close()#关闭文件

在最后,我们还要再修改Scrapy中settings.py文件里的默认设置:添加请求头,以及把ROBOTSTXT_OBEY=True改成ROBOTSTXT_OBEY=False

我们需要取消DOWNLOAD_DELAY = 0这行的注释(删掉#)。DOWNLOAD_DELAY翻译成中文是下载延迟的意思,这行代码可以控制爬虫的速度。因为这个项目的爬取速度不宜过快,我们要把下载延迟的时间改成0.5秒。(在settings.py中)

0开始学py爬虫(学习笔记)(Scrapy框架)(爬取职友集招聘信息)相关推荐

  1. 爬虫学习(二)--爬取360应用市场app信息

    欢迎加入python学习交流群 667279387 爬虫学习 爬虫学习(一)-爬取电影天堂下载链接 爬虫学习(二)–爬取360应用市场app信息 代码环境:windows10, python 3.5 ...

  2. 小福利,带你使用scrapy框架爬取苏宁图书海量信息

    大家好,我是天空之城,今天给大家带来小福利,带你使用scrapy框架爬取苏宁图书海量信息 下图为项目的目录结构 看下最后的数据截图,可以存为excel文件,也可以存入mysql数据库,参见前面文章介绍 ...

  3. python爬虫教程:Scrapy框架爬取Boss直聘网Python职位信息的源码

    今天小编就为大家分享一篇关于Scrapy框架爬取Boss直聘网Python职位信息的源码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 分析 使用Crawl ...

  4. python爬虫学习笔记-scrapy框架(1)

    简介 什么是框架? 所谓的框,其实说白了就是一个[项目的半成品],该项目的半成品需要被集成了各种功能且具有较强的通用性. Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名, ...

  5. python爬虫学习笔记-scrapy框架之start_url

    在使用命令行创建scrapy项目后,会发现在spider.py文件内会生成这样的代码: name = 'quotes' allowed_domains = ['quotes.toscrape.com' ...

  6. 爬虫学习笔记-scrapy框架介绍

    优势 批量爬取数据 高效率 架构图 各模块的功能 1,Scrapy Engine(引擎):Scrapy框架的核心部分.负责在Spider和ItemPipeline.Downloader.Schedul ...

  7. python爬虫学习笔记分析Ajax爬取果壳网文章

    有时在使用requests抓取页面会遇到得到的结果与在浏览器 中看到的结果不一样,在浏览器检查元素中可以看到的正常的显示的网页数据,但是requests请求得到的结果却没有.这是因为requests请 ...

  8. python3爬虫之使用Scrapy框架爬取英雄联盟高清桌面壁纸

    使用Scrapy爬虫抓取英雄联盟高清桌面壁纸 源码地址:https://github.com/snowyme/loldesk 开始项目前需要安装python3和Scrapy,不会的自行百度,这里就不具 ...

  9. python爬虫(16)使用scrapy框架爬取顶点小说网

    本文以scrapy 框架来爬取整个顶点小说网的小说 1.scrapy的安装 这个安装教程,网上有很多的例子,这里就不在赘述了 2.关于scrapy scrapy框架 是一个非常好的东西,能够实现异步爬 ...

  10. Scrapy模块爬取中华英才网招聘信息(分页)

    import scrapy from fenye.items import FenyeItem import requests class ZhfySpider(scrapy.Spider):name ...

最新文章

  1. python由列表中提取出来的浮点型字符串不能直接转换成整形
  2. java11模块化开发_【JDK 11】关于 Java 模块系统,看这一篇就够了
  3. Spring IOC-BeanFactory的继承体系结构
  4. 服务器主板装w7系统死机,解决win7安装过程死机现象有一招
  5. 带有Angular JS的Java EE 7 –第1部分
  6. Chapter 5 Blood Type——33
  7. 搭建java_搭建JAVA环境
  8. 2020年2月全国程序员工资统计
  9. tensorboard特征图可视化
  10. 视频编解码器,bbv 缓冲区溢出和下溢
  11. IDEA 打包、Spring Boot Maven plugin 打包可执行 Jar 程序
  12. python做excel表格代码_python读写Excel表格的实例代码(简单实用)
  13. 如何利用matlab做BP神经网络分析(利用matlab神经网络工具箱)
  14. Bloodsucker ZOJ-3551 期望DP
  15. 利用json实现vivo x20手机评论的爬取
  16. html 气泡动画效果,CSS 动画实现动态气泡背景的方法
  17. 软件分析与用户体验分析
  18. 用python做一个银行取款系统_我的第一个Python小程序,大老虎银行存取款机程序!支持转账...
  19. 数字经济核心科技深度报告:AI+5G是数字时代通用技术平台
  20. 数字角频率和模拟角频率和物理频率和归一化角频率的关系,及FFT频率和实际物理频率的关系分析

热门文章

  1. MySQL的性能分析关键字,explain,及其返回值代表的意思
  2. 渗透测试——痕迹清除
  3. redhat linux 下小企鹅输入法fcitx的安装
  4. 分享10个最佳Linux VPS服务器托管
  5. easyui-filebox java上传附件,在EasyUI项目中使用FileBox控件实现文件上传处理
  6. ESAYUI filebox 隐藏
  7. Jmeter实战:零基础也能看懂的性能测试
  8. JEECMS安装部署方法以及使用说明教程
  9. 骑士游历问题——至少需要多少步
  10. win10系统怎么打开pdf文件