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  response
    else:
        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 data
    except:
        return False

def main(num):
    #拼接url
    url=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条数据

继续学习 欢迎大佬们指点

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值