Python 爬虫 分页爬取boss招聘信息

本文章的所有代码和相关文章, 仅用于经验技术交流分享,禁止将相关技术应用到不正当途径,滥用技术产生的风险与本人无关。
本文章是自己学习的一些记录。

分页爬取Boss招聘信息

上一篇博客是进行了单页的爬取,这一篇博客进行分页爬取
对了 昨天爬了boss今天打开那个网页需要验证一下才能正常使用,爬虫频繁访问人家的网站确实会对人家的服务器造成很大的压力。

直接上源码:

#coding=utf-8
import re,requests,json
import time
from lxml import etree
#页面请求函数
def get_page(url):#定义请求头headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36','cookie':'__zp__pub__=; __c=1594858288; __g=-; Hm_lvt_194df3105ad7148dcf2b98a91b5e727a=1594802566,1594802579,1594804509,1594858288; lastCity=100010000; __l=l=%2Fwww.zhipin.com%2F&r=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DQQT0PZQBIVcpwWTeZGMmOwV5nQUWVTgFd7EM1L42SmqzJhjC9klUxgc9l2LHGTXa%26wd%3D%26eqid%3De3bb42570052c852000000035f0f9b29&friend_source=0&friend_source=0; __a=41908954.1594802565.1594802579.1594858288.21.3.5.21; Hm_lpvt_194df3105ad7148dcf2b98a91b5e727a=1594858520; __zp_stoken__=e5e0aWGo3cmlTcy4sL0UcdSx7Ri8mMGhwMRYXOTRDZyB1IGpIJWQZcCkUDnw8LhE0GiA6QDokCSA6V3sVPjgZKxJpAnQNazQ3eBVebBkkNXVORwkARV0sJU50BUMCWUd%2FWBl%2FPzVffFhyTXo%3D; __zp_sseed__=7fK5T//qwfcgyvpIKVkQSe3LryZBDEUQ3/HO+nDeYaY=; __zp_sname__=e351c092; __zp_sts__=1594858959299'}#请求指定的url,返回请求的页面# 发送请求res = requests.get(url=url, headers=headers)# 判断请求是否成功if res.status_code == 200:response=res.content.decode('utf-8')return  responseelse:return False#解析页面html数据
def parse_html(html):try:html=etree.HTML(html)job_data = html.xpath('//div[@class="job-title"]//a/text()')city_data = html.xpath('//span[@class="job-area-wrapper"]//span/text()')company_data = html.xpath('//div[@class="company-text"]//h3//a[1]/text()')company_type_data = html.xpath('//div[@class="company-text"]//p//a[1]/text()')data = list(zip(job_data, city_data, company_data, company_type_data))print(data)return dataexcept:return Falsedef main(num):#拼接urlurl=f'https://www.zhipin.com/c100010000/?page={num}&ka=page-{num}'#使用f可以直接在字符串中拼接变量#调用请求页面的程序html=get_page(url)if html:#调用解析的方法函数alist=parse_html(html)with open("./morenewbossdata.json",'a+') as f:for i in alist:f.write(json.dumps(i)+'\n')if __name__=="__main__": for i in range(1,11):print(f'当前正在爬取第{i}页') #f拼接main(i)time.sleep(2)

说一下思路,先进行导包,本文还是使用xpath进行数据解析
首先写主函数main(),写入url 使用f可以直接在字符串中拼接变量(这是在那个学习爬虫的视频中老师教的一种方法)

然后调用页面请求函数get_page()传入参数url,在get_page这个函数中,定义好请求头,也就是上篇博客写的那样的操作,发送请求和验证请求是否成功 传入参数num 也就是我们想要爬取多页的一个参数

请求完成后,调用解析函数parse_html()成功后将数据写入json文件中。

最后写入
if name==“main”:
for i in range(1,11):
print(f’当前正在爬取第{i}页’) #f拼接
main(i)
time.sleep(2)

爬取1-11页的数据共10页,调用主函数
json数据格式的处理还是上篇博客的处理方法,暂时我还没有学习到一种直接就能将中文写进的方法(还得继续学习)
在这里插入图片描述
按照箭头的提示去操作;

转换成功后的数据:
在这里插入图片描述
每页30条数据,这里出了一个问题就是,爬到4页后面就爬不出来了
不知道什么原因(还得查询解决,大佬有知道的可以在评论区指点一下,感激不尽)
所以最终爬取了4页 一共120条数据

继续学习 欢迎大佬们指点


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部