职友集,搜索到全国上百家招聘网站的最新职位。
https://www.jobui.com/rank/company/
打开网址后,你会发现:这是职友集网站的地区企业排行榜,里面含有
本月人气企业榜    前10家公司的招聘信息(公司名称、职位、工作地点和招聘要求)
最佳口碑雇主    前10家公司的招聘信息(公司名称、职位、工作地点和招聘要求)
最多粉丝企业榜    前10家公司的招聘信息(公司名称、职位、工作地点和招聘要求)
最多评论企业榜    前10家公司的招聘信息(公司名称、职位、工作地点和招聘要求)
1、创建 职友网 项目 zhiyou
 1 D:\USERDATA\python>scrapy startproject zhiyou
 2 New Scrapy project 'zhiyou', using template directory 'c:\users\www1707\appdata\local\programs\python\python37\lib\site-packages\scrapy\templates\project', created in:
 3     D:\USERDATA\python\zhiyou
 4
 5 You can start your first spider with:
 6     cd zhiyou
 7     scrapy genspider example example.com
 8
 9 D:\USERDATA\python>cd zhiyou
10
11 D:\USERDATA\python\zhiyou>

2、创建爬虫文件  D:\USERDATA\python\zhiyou\zhiyou\spiders\zhiyou.py

 1 import scrapy
 2 import bs4
 3 import re
 4 import requests
 5 import math
 6 from ..items import ZhiyouItem
 7
 8 class ZhiyouItemSpider(scrapy.Spider):
 9     name = 'zhiyou'
10     allowed_domains   = ['www.jobui.com']
11     start_urls = ['https://www.jobui.com/rank/company/']
12
13     def parse(self,response):
14         bs = bs4.BeautifulSoup(response.text,'html.parser')
15         datas = bs.find_all('a',href=re.compile('^/company/'))
16         for data in datas:
17             company_id = data['href']
18             company_url = 'https://www.jobui.com{}jobs/'.format(company_id)
19             yield scrapy.Request(company_url,callback=self.parse_company)
20
21     def parse_company(self,response):
22         bs = bs4.BeautifulSoup(response.text,'html.parser')
23         try:
24             jobs = int(bs.find('p',class_='m-desc').text.split(' ')[1])
25             job_page = math.ceil(jobs / 15) + 1
26             company_url = str(response).split(' ')[1].replace('>','')
27 #            for i in range(1,job_page):
28             for i in range(1,2):
29                 job_url = '{}p{}'.format(company_url,i)
30                 yield scrapy.Request(job_url,callback=self.parse_job)
31         except:
32             pass
33
34     def parse_job(self,response):
35         bs = bs4.BeautifulSoup(response.text,'html.parser')
36         datas = bs.find_all('div',class_='job-simple-content')
37         company_name = bs.find('h1',id='companyH1')['data-companyname']
38         for data in datas:
39             item = ZhiyouItem()
40             item['company'] = company_name
41             item['job']     = data.find('h3').text
42             item['city']    = data.find('span').text
43             item['desc']    = data.find_all('span')[1].text
44             yield item

3、编辑settings.py
 1 BOT_NAME = 'zhiyou'
 2
 3 SPIDER_MODULES = ['zhiyou.spiders']
 4 NEWSPIDER_MODULE = 'zhiyou.spiders'
 5
 6 USER_AGENT = 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'
 7
 8 ROBOTSTXT_OBEY = False
 9
10 FEED_URI = './s.csv'
11 FEED_FORMAT='CSV'
12 FEED_EXPORT_ENCODING='utf-8-sig'
13
14 DOWNLOAD_DELAY = 0.5
15
16 ITEM_PIPELINES = {
17     'zhiyou.pipelines.ZhiyouPipeline': 300,
18 }

4、编辑 items.py
1 import scrapy
2
3 class ZhiyouItem(scrapy.Item):
4     company = scrapy.Field()
5     job = scrapy.Field()
6     city = scrapy.Field()
7     desc = scrapy.Field()

5、编辑pipelines.py 
 1 import openpyxl
 2
 3 class ZhiyouPipeline(object):
 4 #定义一个JobuiPipeline类,负责处理item
 5     def __init__(self):
 6     #初始化函数 当类实例化时这个方法会自启动
 7         self.wb =openpyxl.Workbook()
 8         #创建工作薄
 9         self.ws = self.wb.active
10         #定位活动表
11         self.ws.append(['公司', '职位', '地址', '招聘信息'])
12         #用append函数往表格添加表头
13
14     def process_item(self, item, spider):
15     #process_item是默认的处理item的方法,就像parse是默认处理response的方法
16         line = [item['company'], item['job'], item['city'], item['desc']]
17         #把公司名称、职位名称、工作地点和招聘要求都写成列表的形式,赋值给line
18         self.ws.append(line)
19         #用append函数把公司名称、职位名称、工作地点和招聘要求的数据都添加进表格
20         return item
21         #将item丢回给引擎,如果后面还有这个item需要经过的itempipeline,引擎会自己调度
22
23     def close_spider(self, spider):
24     #close_spider是当爬虫结束运行时,这个方法就会执行
25         self.wb.save('./s.xlsx')
26         #保存文件
27         self.wb.close()
28         #关闭文件

6、在D:\USERDATA\python\dangdang 下执行命令 scrapy crawl zhiyou


Scrapy 核心代码,callback

 1 #导入模块:
 2 import scrapy
 3 import bs4
 4 from ..items import JobuiItem
 5
 6
 7 class JobuiSpider(scrapy.Spider):
 8     name = 'jobs'
 9     allowed_domains = ['www.jobui.com']
10     start_urls = ['https://www.jobui.com/rank/company/']
11
12 #提取公司id标识和构造公司招聘信息的网址:
13     def parse(self, response):
14     #parse是默认处理response的方法
15         bs = bs4.BeautifulSoup(response.text, 'html.parser')
16         ul_list = bs.find_all('ul',class_="textList flsty cfix")
17         for ul in ul_list:
18             a_list = ul.find_all('a')
19             for a in a_list:
20                 company_id = a['href']
21                 url = 'https://www.jobui.com{id}jobs'
22                 real_url = url.format(id=company_id)
23                 yield scrapy.Request(real_url, callback=self.parse_job)
24 #用yield语句把构造好的request对象传递给引擎。用scrapy.Request构造request对象。callback参数设置调用parsejob方法。
25
26
27     def parse_job(self, response):
28     #定义新的处理response的方法parse_job(方法的名字可以自己起)
29         bs = bs4.BeautifulSoup(response.text, 'html.parser')
30         #用BeautifulSoup解析response(公司招聘信息的网页源代码)
31         company = bs.find(id="companyH1").text
32         #用fin方法提取出公司名称
33         datas = bs.find_all('li',class_="company-job-list")
34         #用find_all提取<li class_="company-job-list">标签,里面含有招聘信息的数据
35         for data in datas:
36         #遍历datas
37             item = JobuiItem()
38             #实例化JobuiItem这个类
39             item['company'] = company
40             #把公司名称放回JobuiItem类的company属性里
41             item['position']=data.find('h3').find('a').text
42             #提取出职位名称,并把这个数据放回JobuiItem类的position属性里
43             item['address'] = data.find('span',class_="col80").text
44             #提取出工作地点,并把这个数据放回JobuiItem类的address属性里
45             item['detail'] = data.find('span',class_="col150").text
46             #提取出招聘要求,并把这个数据放回JobuiItem类的detail属性里
47             yield item
48             #用yield语句把item传递给引擎

转载于:https://www.cnblogs.com/www1707/p/10850692.html

32、出任爬虫公司CEO(爬取职友网招聘信息)相关推荐

  1. python笔记-爬取猎聘网招聘信息

    目录 猎聘网信息爬取 爬取职位链接 1. 构建URL: 2. 获取网页 3. 解析网页 4. 保存数据到表格 爬取职位详情信息 1. 基本步骤 2. 获取表格链接 3. 获取职位详情信息网页 4. 解 ...

  2. python爬虫 request+lxml爬取黄页88网企业信息

    黄页88网: 简称黄页网或者黄页88,是由互联网资深人士创办于2009年11月.是一家整合企业黄页.分类信息以及时下流行的SNS社区三方面优势于一体定位于服务B2B平台的网站.主要帮助企业宣传推广公司 ...

  3. 使用Requests+正则表达式爬取中国工作网招聘信息,并保存为JSON格式

    文章目录 一.准备 1.数据 2.数据字段 二.数据爬取 1.设置预设 2.观察网页源码(部分) 3.制定正则规则 三.数据存取 存为JSON文件 将多个字段列表进行打包,并放入一个list中 四.完 ...

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

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

  5. Python爬虫入门 | 5 爬取小猪短租租房信息

    小猪短租是一个租房网站,上面有很多优质的民宿出租信息,下面我们以成都地区的租房信息为例,来尝试爬取这些数据. 小猪短租(成都)页面:http://cd.xiaozhu.com/   1.爬取租房标题 ...

  6. 爬虫笔记——多线程爬取斗图网表情包(threading)

    爬虫笔记--多线程爬取斗图网表情包(threading) 网站观察 爬取框架 具体代码 斗图网网址:斗图网,这里以爬取最新套图为例. 网站观察 在网页翻页操作中可以看到网页是非动态加载的(page为页 ...

  7. python爬取链家新房_Python爬虫实战:爬取链家网二手房数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 买房装修,是每个人都要经历的重要事情之一.相对于新房交易市场来说,如今的二手房交易市场一点也 ...

  8. python爬取链家新房数据_Python爬虫实战:爬取链家网二手房数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 买房装修,是每个人都要经历的重要事情之一.相对于新房交易市场来说,如今的二手房交易市场一点也 ...

  9. python爬取招聘信息_python 爬取boss直聘招聘信息实现

    原标题:python 爬取boss直聘招聘信息实现 1.一些公共方法的准备 获取数据库链接: importpymysql ''' 遇到不懂的问题?Python学习交流群:821460695满足你的需求 ...

  10. python爬取boss直聘招聘信息_Python 爬取boss直聘招聘信息!

    原标题:Python 爬取boss直聘招聘信息! 1.一些公共方法的准备 获取数据库链接: importpymysql ''' 遇到不懂的问题?Python学习交流群:821460695满足你的需求, ...

最新文章

  1. 一文详解图对比学习(GNN+CL)的一般流程和最新研究趋势
  2. 中国大学moocpython笔记_用Python玩转数据,中国大学MOOC(慕课)答案公众号搜题
  3. QT串口编程的相关类(QSerialPortInfo)
  4. Python 字符串大小写转换
  5. Servlet相关(request域转发、重定向、刷新头)(session域)
  6. 北工商计算机考研难吗,北京工商大学考研难吗?一般要什么水平才可以进入?...
  7. J2SE下的路径问题
  8. pr警告项目使用计算机上目前不可用字体,pr2018以上新版字幕字体找不到的问题?...
  9. [转][darkbaby]任天堂传——失落的泰坦王朝(上)
  10. 备考通信复试过程中的一些知识点总结梳理——移动通信系统Ⅰ
  11. 台式计算机m.2的参数,联想启天M系列
  12. html网页设计的难点,在做设计与制作网页中主要难点是什么?
  13. 韩寒等50名作家3.15联袂声讨百度侵权
  14. 移动端300ms延迟_移动端300ms延迟的解决方法
  15. 读书笔记 摘自:《为什么精英都是时间控》
  16. (生物信息学)R语言绘图初-中-高级——3-10分文章必备——Venn图(韦恩图)(初级)
  17. Protobuf报错CHECK failed: GeneratedDatabase()->Add(encoded_file_descriptor, size):
  18. php怎么在图像中显示文字,照片写字软件|图片写字软件 怎么在照片上写文字 怎么在图片上写艺术字...
  19. 如果要创业,你应该如何选择创业方向?
  20. windows PCIe 工具: TeleScan

热门文章

  1. 有一根27厘米的细木杆java_百度笔试题 蚂蚁爬杆
  2. 计算机技术与软件专业技术资格(水平)考试指南
  3. PHP简单实现个人网站
  4. 王者荣耀以鸿蒙起网名,王者荣耀
  5. 理财入门:企业分析(简述)
  6. 我为什么从阿里巴巴集团离职?
  7. 神经网络参数优化算法,神经网络损失函数设计
  8. 报数游戏c语言,报数游戏-实战简单设计
  9. 兄弟连Linux笔记
  10. qcow2和vmdk互相转