这是什么?
是一个入门级python小爬虫.爬取testhome最新一页招聘的简单信息.
直接上代码:
from requests_html import HTMLSession
def save(data):
title = data.get('title')
href = data['href']
with open('jobs.md', 'a+') as f:
f.write("\n[{title}]({href})\n".format(title=title, href=href))
def start():
session = HTMLSession()
response = session.get('https://testerhome.com/jobs')
jobs = response.html.find(selector='.panel-body', first=True)
for job in jobs.find('.title a'):
data = job.attrs
data['href'] = job.absolute_links.pop()
save(data)
if __name__ == '__main__':
start()
解释
from requests_html import HTMLSession
引入库,库的Doc在这.随后,实例化一个HTMLSession对象.
response = session.get('https://testerhome.com/jobs')
jobs = response.html.find(selector='.panel-body', first=True)
for job in jobs.find('.title a'):
data = job.attrs
# 获取绝对地址,返回的是set数据,将之赋值到data中的href即可
data['href'] = job.absolute_links.pop()
save(data)
接着,get方法打开目标网页,得到一个response.通过阅读上面提到的Doc官方文档,可以学习到response实现的接口.
每一个网页链接,请求返回回来的数据,可以理解为一大串看得眼花缭乱的字符串.在浏览器中加载css文件,提供样式.加载JavaScript文件,提供交互,最后渲染出赏心悦目的页面.而数据,在页面中展示出来.
当前这个爬虫,则通过response.html.find()与css选择器,去获取类名为panel-body的元素,以及此元素内部的数据.
什么是css和JavaScript?
如果你想要了解什么是css和JavaScript,W3C欢迎你.
first设置为True,应该是让css选择器只选中第一个类名为panel-body的元素及其内部数据.
for job in jobs.find('.title a'):
data = job.attrs
data['href'] = job.absolute_links.pop()
save(data)
通过遍历获取到的类名为panel-body的元素数据,再查找内部类名为title下的a元素,得到结果列表中每一个item.再通过attrs属性得到dict类型的数据.
为什么是dict类型的数据?
print(type(job.attrs)) 即可知道type.再此调用save函数,save函数对dict数据进行解析.
def save(data):
title = data.get('title')
href = data('href')
with open('jobs.md', 'a+') as f:
f.write("\n[{title}]({href})\n".format(title=title, href=href))
最后解析到title和招聘详细信息的链接.
markdown 格式很漂亮,如果你不知道的话,就太可惜了
通过python的IO方法,保存为markdown数据格式.
最后还有...
还有什么来着,忘了.对了,再次重申,这是一个Python入门级爬虫demo
还有,对于这个爬虫,有很多地方需要改进.如果你有兴趣的话.
就这样.如果有问题,留言吧,谢谢.
附上数据:
[内推][深圳][上海] 大疆创新科技有限公司 多种测试岗位 [新增云台测试岗]
[北京] 滴滴出行 招聘服务端测试开发工程师 若干 西二旗软件园 (薪资:10-40k)
[上海] 依图科技 招聘 - 系统测试开发工程师,基础架构测试开发工程师 / 1 ~ 5 年工作经验
[北京] [盈米财富] 招聘初 / 中级测试开发工程师 (1 名)
多点 Dmall 技术中心招聘 测试工程师 10K-20K / 成都 / 经验 3-5年 / 本科及以上 / 全职
[OPPO 深圳] 展望 2019 全新岗位招聘-互联网- 测试工程师 / 测试专家 / 测试开发 / 算法工程师 [以下岗位长期有效]
等等...这只是一页的数据.