腾讯python招聘_技术 | Python:腾讯招聘信息抓取
本文版权归@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:腾讯招聘信息抓取相关推荐
- python卸载_技术 | Python 包安装和卸载的几种方式
黑马程序员 微信号:heiniu526 传智播客旗下互联网资讯,学习资源免费分享平台 同学对于python包的安装卸载和简单管理操作并熟练,通过简单介绍集中常用的包管理的方式,让其能够在需要安装第三方 ...
- python爬虫公众号_python爬虫_微信公众号推送信息爬取的实例
问题描述 利用搜狗的微信搜索抓取指定公众号的最新一条推送,并保存相应的网页至本地. 注意点 搜狗微信获取的地址为临时链接,具有时效性. 公众号为动态网页(JavaScript渲染),使用request ...
- python微信爬取教程_python爬虫_微信公众号推送信息爬取的实例
问题描述 利用搜狗的微信搜索抓取指定公众号的最新一条推送,并保存相应的网页至本地. 注意点 搜狗微信获取的地址为临时链接,具有时效性. 公众号为动态网页(JavaScript渲染),使用request ...
- python微信公众号推送_python爬虫_微信公众号推送信息爬取的实例
问题描述 利用搜狗的微信搜索抓取指定公众号的最新一条推送,并保存相应的网页至本地. 注意点 搜狗微信获取的地址为临时链接,具有时效性. 公众号为动态网页(JavaScript渲染),使用request ...
- 480集课程-打通Python开发的任督二脉 轻松掌握Python高级开发技术 Python超级学科课程
480集课程-打通Python开发的任督二脉 轻松掌握Python高级开发技术 Python超级学科课程 ===============课程目录=============== ├─(1) 01-Pyt ...
- 第一章 第一节:Python基础_认识Python
Python基础入门(全套保姆级教程) 第一章 第一节:Python基础_认识Python 1. 什么是编程 通俗易懂,编程就是用代码编写程序,编写程序有很多种办法,像c语言,javaPython语言 ...
- Python爬虫之XPath基础教程:用代码抓取网页数据
Python爬虫之XPath基础教程:用代码抓取网页数据 在网络时代,网页数据是获取信息和进行分析的最重要的来源之一.Python的爬虫技术让我们可以轻松抓取网页数据,并进行数据处理.XPath是一种 ...
- 分享:Python使用cookielib和urllib2模拟登陆新浪微博并抓取数据
Python使用cookielib和urllib2模拟登陆新浪微博并抓取数据 http://my.oschina.net/leopardsaga/blog/94774
- 「docker实战篇」python的docker-打造多任务端app应用数据抓取系统(下)(35)
上次已经把python文件挂载到虚拟机上了,这次主要设置下虚拟机通过docker容器的方式. 运行 python 代码运行 >启动一个crt的会话 docker run -it -v /root ...
- python爬虫成长之路(一):抓取证券之星的股票数据
python爬虫成长之路(一):抓取证券之星的股票数据 获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇 ...
最新文章
- 字符串数组-获取两个字符串中最大的相同子串(最大相同子串有且只有一个)
- hashcode相等的两个对象一定相等吗_为什么重写 equals方法时一定要重写hashCode方法?...
- 关于IB_DESIGNABLE / IBInspectable的那些事
- 递归实现【指数型 / 组合型 / 排列型】枚举
- QML识别模块identifiedmodules
- PHP nl2br()格式化输出
- java 负数 位移运算_Java中的位移运算
- Hive 终于等来了 Flink
- 【ZJOI2010】数字计数 数位dp
- 数据字典模板_巧用单元格保护功能+字典技术,制作高大上的人员信息录入表...
- iOS 关于单例那点事
- 订单审批流程 数据库表设计
- Pyinstaller的Spec文件用法
- html网页屏保,屏幕保护是什么
- nload0.7.2编译及使用说明
- FICO_通过参考创建方式批量复制跨科目表的总账科目
- 使用RestTemplate:报错Could not extract response: no suitable HttpMessageConverter found for response typ
- mySQL MAX与sum 连用_mysql – 在sql脚本中一起使用sum和max
- Java工厂设计模式
- Eclipse下搭建struts、spring、hibernate开发环境
热门文章
- Excel:计数相关的函数
- Python环境与PyCharm编辑器的安装教程
- 采用计算机辅助数据收集,关于计算机在数据收集中的作用分析
- C语言循环语句中 i++, ++i, i--, --i的使用
- [spark] spark推测式执行
- Tableau学习摘录总结①(层次、聚合度和颗粒度层次、聚合度和颗粒度,字段(离散和连续),小建议)
- 对android layout_wight属性和weight_sum属性的深入理解
- IT人必读的10个小故事
- 独家丨Web3风向从NFTs吹向DAOs?一季度DAO发展回顾
- android 蓝牙信息提醒,Android蓝牙与BLE通信相关的读、写、通知、指示操作