实战内容:爬取boss直聘的岗位信息,存储在数据库,最后通过可视化展示出来

PS注意:很多人学Python过程中会遇到各种烦恼问题,没有人帮答疑容易放弃。为此小编建了个Python全栈免费答疑.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,不懂的问题有老司机解决里面还有最新Python教程项目可拿,,一起相互监督共同进步!

0 环境搭建

MacBook Air (13-inch, 2017)

CPU:1.8 GHz Intel Core i5

RAM:8 GB 1600 MHz DDR3

IDE:anaconda3.6 | jupyter notebook

Python版本:Python 3.6.5 :: Anaconda, Inc.

1 安装scrapy

过程在参考链接中,我只说与上面不一致的地方

pip install scrapy

遇到报错,无法调用gcc*解决方案:mac自动弹出安装gcc提示框,点击“安装”即可

安装成功,安装过程中,终端打印出“distributed 1.21.8 requires msgpack, which is not installed.”

解决方案:

conda install -c anaconda msgpack-python

pip install msgpack

2 新建项目

scrapy startproject www_zhipin_com

可以通过 scrapy -h 了解功能

源码文件关系

tree这个命令挺好用,微软cmd中自带,Python没有自带的,可以参考网上代码,自己写一个玩玩。

3 定义要抓取的item

与源代码基本一致

# -*- coding: utf-8 -*-

# Define here the models for your scraped items

#

# See documentation in:

# https://doc.scrapy.org/en/latest/topics/items.html

import scrapy

class WwwZhipinComItem(scrapy.Item):

# define the fields for your item here like:

# name = scrapy.Field()

pid = scrapy.Field()

positionName = scrapy.Field()

positionLables = scrapy.Field()

city = scrapy.Field()

experience = scrapy.Field()

educational = scrapy.Field()

salary = scrapy.Field()

company = scrapy.Field()

industryField = scrapy.Field()

financeStage = scrapy.Field()

companySize = scrapy.Field()

time = scrapy.Field()

updated_at = scrapy.Field()

4 分析页面

现在页面改版了,发布时间有了小幅度调整

页面

HTML结构如下

5 爬虫代码

这一步有些看不懂,硬着头皮往下写,不懂得先记着

5.1关于request headers

比如headers中,我在自己的浏览器中找不到下面内容x-devtools-emulate-network-conditions-client-id ??postman-token ??

我该学习一下request headers中内容目前采用的方法是把作者的headers拷贝过去,然后我这边有的我替换掉,没有的比如x-devtools我就用作者原有的。

5.2 关于extract_first()和extract()

extract_first()和extract()的区别:提取全部内容: .extract(),获得是一个列表提取第一个:.extract_first(),获得是一个字符串

Selectors根据CSS表达式从网页中选择数据(CSS更常用)response.selector.css('title::text') ##用css选取了title的文字内容由于selector.css使用比较普遍,所以专门定义了css,所以上面也可以写成:response.css('title::text')

运行脚本,会在项目目录下生成一个包含爬取数据的item.json文件

scrapy crawl zhipin -o item.json

debug完最后一个错误之后,第五步终于跑通了,截个图

爬取boss直聘上面关于python的职位

存入json文件的模样有点奇怪,没汉字,第六步应该会解决:

{"pid": "23056497", "positionName": "", "salary": "8k-9k", "city": "北京", "experience": "不限", "educational": "本科", "company": "今日头条", "positionLables": [], "time": "发布于07月12日", "updated_at": "2018-07-17 00:04:05"},

{"pid": "23066797", "positionName": "", "salary": "18k-25k", "city": "北京", "experience": "1-3年", "educational": "本科", "company": "天下秀", "positionLables": [], "time": "发布于07月13日", "updated_at": "2018-07-17 00:04:05"},

第五步因为网页发生改版,所以发布时间time这块需要修改一下,其他都没有问题。我也把源码贴一下:

# 2018-07-17

# Author limingxuan

# limx2011@hotmail.com

# blog:https://www.jianshu.com/p/a5907362ba72

import scrapy

import time

from www_zhipin_com.items import WwwZhipinComItem

class ZhipinSpider(scrapy.Spider):

name = 'zhipin'

allowed_domains = ['www.zhipin.com']

start_urls = ['http://www.zhipin.com/']

positionUrl = 'https://www.zhipin.com/job_detail/?query=python&scity=101010100'

curPage = 1

#我的浏览器找不到源码中的一些字段,比如

#x-devtools-emulate-network-conditions-client-id

#upgrade-insecure-requests

#dnt

#cache-control

#postman-token

#所以就没有加,按我的浏览器查到的信息填写的,现在看起来貌似也能跑起来

headers = {

'accept': "application/json, text/javascript, */*; q=0.01",

'accept-encoding': "gzip, deflate, br",

'accept-language': "zh-CN,zh;q=0.9,en;q=0.8",

'content-type': "application/x-www-form-urlencoded; charset=UTF-8",

'cookie': "JSESSIONID=""; __c=1530137184; sid=sem_pz_bdpc_dasou_title; __g=sem_pz_bdpc_dasou_title; __l=r=https%3A%2F%2Fwww.zhipin.com%2Fgongsi%2F5189f3fadb73e42f1HN40t8~.html&l=%2Fwww.zhipin.com%2Fgongsir%2F5189f3fadb73e42f1HN40t8~.html%3Fka%3Dcompany-jobs&g=%2Fwww.zhipin.com%2F%3Fsid%3Dsem_pz_bdpc_dasou_title; Hm_lvt_194df3105ad7148dcf2b98a91b5e727a=1531150234,1531231870,1531573701,1531741316; lastCity=101010100; toUrl=https%3A%2F%2Fwww.zhipin.com%2Fjob_detail%2F%3Fquery%3Dpython%26scity%3D101010100; Hm_lpvt_194df3105ad7148dcf2b98a91b5e727a=1531743361; __a=26651524.1530136298.1530136298.1530137184.286.2.285.199",

'origin': "https://www.zhipin.com",

'referer': "https://www.zhipin.com/job_detail/?query=python&scity=101010100",

'user-agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"

}

def start_requests(self):

return [self.next_request()]

def parse(self,response):

print("request -> " + response.url)

job_list = response.css('div.job-list > ul > li')

for job in job_list:

item = WwwZhipinComItem()

job_primary = job.css('div.job-primary')

item['pid'] = job.css(

'div.info-primary > h3 > a::attr(data-jobid)').extract_first().strip()

#job-title这里和源码不同,页面改版所导致

item['positionName'] = job_primary.css(

'div.info-primary > h3 > a > div.job-title::text').extract_first().strip()

item['salary'] = job_primary.css(

'div.info-primary > h3 > a > span::text').extract_first().strip()

#提取全部内容: .extract(),获得是一个列表

#提取第一个:.extract_first(),获得是一个字符串

info_primary = job_primary.css(

'div.info-primary > p::text').extract()

item['city'] = info_primary[0].strip()

item['experience'] = info_primary[1].strip()

item['educational'] = info_primary[2].strip()

item['company'] = job_primary.css(

'div.info-company > div.company-text > h3 > a::text').extract_first().strip()

company_infos = job_primary.css(

'div.info-company > div.company-text > p::text').extract()

if len(company_infos)== 3:

item['industryField'] = company_infos[0].strip()

item['financeStage'] = company_infos[1].strip(

python爬虫招聘-Python爬虫实战-抓取boss直聘招聘信息相关推荐

  1. python爬取boss直聘招聘信息_Python爬虫实战-抓取boss直聘招聘信息

    Python Python开发 Python语言 Python爬虫实战-抓取boss直聘招聘信息 实战内容:爬取boss直聘的岗位信息,存储在数据库,最后通过可视化展示出来 PS注意:很多人学Pyth ...

  2. python抓取boss直聘招聘信息

    1.目前测试情况看只能抓取头3页,后续得重新换cookie抓取. 2.如果登录自己boss账户,有可能导致账户临时被封,测试情况是个人账户被封了一个小时. #!/usr/bin/python # -* ...

  3. Python爬虫入门教程32:爬取boss直聘招聘数据并做可视化展示

    前言

  4. Python爬虫实战之二 - 基于Scrapy框架抓取Boss直聘的招聘信息

    Python爬虫实战之三 - 基于Scrapy框架抓取Boss直聘的招聘信息 ---------------readme--------------- 简介:本人产品汪一枚,Python自学数月,对于 ...

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

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

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

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

  7. Python爬虫:爬取“Boss直聘”招聘数据

    hello 大家好~ 又是元气满满的一天呢~ 既然元气满满,要不要搞点事情,譬如说,爬取"Boss直聘"(此处模仿歪果仁讲话更带感)的招聘数据~ 说走咱就走,说干咱就干~" ...

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

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

  9. python爬取boss直聘招聘信息_python学习之路-爬取boss直聘的岗位信息

    背景 想了解从事python相关岗位需要具备什么技能,于是就想从招聘网站上的职位需求入手,把信息获取下来后,生成词云,这样就能很直观的看出来哪些技能是python相关岗位需要具备的了. 技术概览 sc ...

最新文章

  1. 定制化Azure站点Java运行环境(2)
  2. php语言smtp类,php mailer类调用远程SMTP服务器发送邮件实现方法
  3. mysql和Oracle 备份表
  4. WebService 与 DCOM / Corba 是什么关系?
  5. 北斗导航 | 获取观测卫星的位置信息,并绘制卫星的方位角和仰角得到星空图:GSV语句(附Matlab源代码)
  6. 解决开机POST提示Strike tne F1 key to continue,F2 to run the setup utility
  7. matlab怎么画单位圆的切线,matlab绘图曲线标注怎么输出角度单位,就是那个小圆圈?...
  8. navicat 怎么调试存储过程_Mysql调试存储过程最简单的方法
  9. matches php,PHP 正则表达式 推荐
  10. mysql创建定时任务 脚本_linux中定时执行mysql脚本
  11. 开源BI工具superset的安装使用
  12. [python]-asyncio异步通信之websockets
  13. ruby+watir 安装
  14. 使用原版镜像安装windows时install.wim文件过大的解决方案
  15. 次世代zbrush骷颅头高模雕刻 艺术头骨SP模型材质贴图讲解
  16. 旅游行业APP开发方案
  17. 气压传感器MPX4115学习笔记
  18. 【误差】方差、标准差、均方误差和均方根误差的区别总结
  19. 怎么设计高效的敏感词过滤系统(一)
  20. 使用Hexo搭建个人博客-保姆级教程

热门文章

  1. 详解正则表达式匹配方法 match()
  2. 2019.7.15随笔
  3. Delphi 多文件拖放获取路径示例
  4. vue-cli 各文件夹的用途
  5. 请教visio-uml-活动图中动作状态和状态的区别谢谢 - 软件工程-管理 - 软件规划版...
  6. 微信小程序 - 时间戳转时间
  7. LoadRunner11_录制脚本时的浏览器版本
  8. W5500EVB UDP模式的測试与理解
  9. AXIS2整合spring需要的jar,以及大部分缺少jar所报的异常
  10. EPUB CFI 规范