本文版权归@itcast @wj14k 所有,未经允许不得转载!感谢你的阅读!

想成为一名真正的程序猿,你需要一份从事编程的工作!那么我们今天就来抓取腾讯招聘网站上的招聘信息!

要获取腾讯招聘网站上的招聘信息,总共需要以下三步:

准备工作:安装scrapy框架模块、安装lxml模块

利用谷歌浏览器抓包:确定url,发送请求所需参数,确定返回数据所在位置

利用scrapy爬虫框架完成代码

一. 准备工作

目标:安装scrapy、lxml模块

1. 在命令行终端输入 pip install scrapy 后,等待下载安装完成

scrapy是一个爬虫框架

可以帮助我们用很少的代码完成快速的抓取

2. 在命令行终端输入 pip install lxml 后,等待下载安装完成

lxml可以用来对html页面的数据进行提取

二. 利用谷歌浏览器抓包

1. 确定列表页和详情页的url

1.png

2. 注意最后一页

1-2.png

3. 确定工作职责和工作要求

2.png

4. 根据抓包确定代码逻辑

对起始url发送请求获取响应,指定该响应用专门解析列表页的函数来提取处理

在列表页解析函数中,对列表页的响应内容进行提取

提取下一页的url,并构造请求对象,指定使用列表页解析函数来解析响应

提取详情页的url,并构造请求对象,指定使用详情页解析函数来解析响应

在详情页解析函数中,提取相应的数据:

标题

工作职责

工作要求

三. 完成代码

1. 创建scrapy项目和爬虫

1.1 在终端输入 scrapy startproject Tencent创建项目

Tencent是项目的名字,创建完成后,可以在相应的路径下看到如下文件夹及文件结构

3.png

1.2 进入项目路径下,终端输入scrapy genspider tencent tencent.com创建爬虫

tencent.com是爬虫抓取的url的域名范围,后续可以在代码中进行修改。创建爬虫成功后在spiders文件夹下可以看到名为tencent的py文件

4.png

打开tencent.py文件可以看到scrapy框架已经帮我写好了一部分代码

5.png

1.3 完成tencent.py中的代码

1

import scrapy

2

import json

3

from scrapy import Request

4

5

6

class TencentSpider(scrapy.Spider):

7

name = 'tencent'

8

allowed_domains = ['tencent.com']

9

start_urls = ['https://hr.tencent.com/position.php']

10

11

def parse(self, response):

12

"""专门处理解析列表页"""

13

# 先分组定位详情页url所在的li,注意不包含第一个和最后一个li

14

tr_list = response.xpath('//table[@class="tablelist"]//tr')[1:-1]

15

for tr in tr_list:

16

# 提取并拼接详情页的url字符串

17

dedail_url = 'https://hr.tencent.com/' + tr.xpath('.//a/@href').extract_first()

18

# 构造并返回详情页的请求对象,并指定对应的响应的解析函数

19

yield Request(dedail_url, callback=self.parse_detail)

20

21

# 翻页:定位并找到下一页的url

22

next_href = response.xpath('//a[text()="下一页"]/@href').extract()

23

if next_href != 'javascript:;':

24

next_url = 'https://hr.tencent.com/' + next_href[0] # 拼接下一页的url

25

# 构造并返回下一页(列表页)请求对象,并指定对应的响应的解析函数

26

# 下一页还是列表页,所以还用parse函数进行解析处理!

27

yield Request(next_url, callback=self.parse)

28

29

def parse_detail(self, response):

30

"""专门处理解析详情页"""

31

item = {} # 定义数据字典

32

# 提取工作详情的标题

33

item['title'] = response.xpath('//td[@id="sharetitle"]/text()').extract_first()

34

# 提取工作职责

35

item['job_duty'] = response.xpath('//table[@class="tablelist textl"]//tr[3]//li/text()').extract()

36

# 提取工作要求

37

item['job_requirements'] = response.xpath('//table[@class="tablelist textl"]//tr[4]//li/text()').extract()

38

# 将数据保存在文件中

39

with open('tencent.txt', 'a', encoding='utf-8') as f:

40

f.write(json.dumps(item, ensure_ascii=False, indent=4) + '\n')

41

yield item

1.4 设置settings.py文件

在项目文件夹Tencent下修改settings.py配置文件

USER_AGENT是用户代理

ROBOTSTXT_OBEY改为False表示忽略robot协议

USER_AGENT是用户代理

ROBOTSTXT_OBEY改为False表示忽略robot协议

6.png

1.5 在项目路径下终端执行scrapy crawl tencent就可以将招聘信息保存到文件中

7.png

小结

现在我们就可以通过以下步骤完成代码抓取腾讯招聘信息

利用谷歌浏览器进行抓包,确定列表页的url和详情页的url,确定数据所在位置

scrapy的命令

创建scrapy爬虫项目 scrapy startproject 项目名

在项目路径下创建scrapy爬虫scrapy genspider 爬虫名 爬虫爬取范围的域名

在项目路径下运行爬虫 scrapy crawl 爬虫名

完成爬虫模块代码的编写

完成配置文件的修改,运行爬虫

腾讯python招聘_技术 | Python:腾讯招聘信息抓取相关推荐

  1. python卸载_技术 | Python 包安装和卸载的几种方式

    黑马程序员 微信号:heiniu526 传智播客旗下互联网资讯,学习资源免费分享平台 同学对于python包的安装卸载和简单管理操作并熟练,通过简单介绍集中常用的包管理的方式,让其能够在需要安装第三方 ...

  2. python爬虫公众号_python爬虫_微信公众号推送信息爬取的实例

    问题描述 利用搜狗的微信搜索抓取指定公众号的最新一条推送,并保存相应的网页至本地. 注意点 搜狗微信获取的地址为临时链接,具有时效性. 公众号为动态网页(JavaScript渲染),使用request ...

  3. python微信爬取教程_python爬虫_微信公众号推送信息爬取的实例

    问题描述 利用搜狗的微信搜索抓取指定公众号的最新一条推送,并保存相应的网页至本地. 注意点 搜狗微信获取的地址为临时链接,具有时效性. 公众号为动态网页(JavaScript渲染),使用request ...

  4. python微信公众号推送_python爬虫_微信公众号推送信息爬取的实例

    问题描述 利用搜狗的微信搜索抓取指定公众号的最新一条推送,并保存相应的网页至本地. 注意点 搜狗微信获取的地址为临时链接,具有时效性. 公众号为动态网页(JavaScript渲染),使用request ...

  5. 480集课程-打通Python开发的任督二脉 轻松掌握Python高级开发技术 Python超级学科课程

    480集课程-打通Python开发的任督二脉 轻松掌握Python高级开发技术 Python超级学科课程 ===============课程目录=============== ├─(1) 01-Pyt ...

  6. 第一章 第一节:Python基础_认识Python

    Python基础入门(全套保姆级教程) 第一章 第一节:Python基础_认识Python 1. 什么是编程 通俗易懂,编程就是用代码编写程序,编写程序有很多种办法,像c语言,javaPython语言 ...

  7. Python爬虫之XPath基础教程:用代码抓取网页数据

    Python爬虫之XPath基础教程:用代码抓取网页数据 在网络时代,网页数据是获取信息和进行分析的最重要的来源之一.Python的爬虫技术让我们可以轻松抓取网页数据,并进行数据处理.XPath是一种 ...

  8. 分享:Python使用cookielib和urllib2模拟登陆新浪微博并抓取数据

    Python使用cookielib和urllib2模拟登陆新浪微博并抓取数据 http://my.oschina.net/leopardsaga/blog/94774

  9. 「docker实战篇」python的docker-打造多任务端app应用数据抓取系统(下)(35)

    上次已经把python文件挂载到虚拟机上了,这次主要设置下虚拟机通过docker容器的方式. 运行 python 代码运行 >启动一个crt的会话 docker run -it -v /root ...

  10. python爬虫成长之路(一):抓取证券之星的股票数据

    python爬虫成长之路(一):抓取证券之星的股票数据 获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇 ...

最新文章

  1. 字符串数组-获取两个字符串中最大的相同子串(最大相同子串有且只有一个)
  2. hashcode相等的两个对象一定相等吗_为什么重写 equals方法时一定要重写hashCode方法?...
  3. 关于IB_DESIGNABLE / IBInspectable的那些事
  4. 递归实现【指数型 / 组合型 / 排列型】枚举
  5. QML识别模块identifiedmodules
  6. PHP nl2br()格式化输出
  7. java 负数 位移运算_Java中的位移运算
  8. Hive 终于等来了 Flink
  9. 【ZJOI2010】数字计数 数位dp
  10. 数据字典模板_巧用单元格保护功能+字典技术,制作高大上的人员信息录入表...
  11. iOS 关于单例那点事
  12. 订单审批流程 数据库表设计
  13. Pyinstaller的Spec文件用法
  14. html网页屏保,屏幕保护是什么
  15. nload0.7.2编译及使用说明
  16. FICO_通过参考创建方式批量复制跨科目表的总账科目
  17. 使用RestTemplate:报错Could not extract response: no suitable HttpMessageConverter found for response typ
  18. mySQL MAX与sum 连用_mysql – 在sql脚本中一起使用sum和max
  19. Java工厂设计模式
  20. Eclipse下搭建struts、spring、hibernate开发环境

热门文章

  1. Excel:计数相关的函数
  2. Python环境与PyCharm编辑器的安装教程
  3. 采用计算机辅助数据收集,关于计算机在数据收集中的作用分析
  4. C语言循环语句中 i++, ++i, i--, --i的使用
  5. [spark] spark推测式执行
  6. Tableau学习摘录总结①(层次、聚合度和颗粒度层次、聚合度和颗粒度,字段(离散和连续),小建议)
  7. 对android layout_wight属性和weight_sum属性的深入理解
  8. IT人必读的10个小故事
  9. 独家丨Web3风向从NFTs吹向DAOs?一季度DAO发展回顾
  10. android 蓝牙信息提醒,Android蓝牙与BLE通信相关的读、写、通知、指示操作