python爬虫应聘信息_python爬虫获取拉钩网在线搜索招聘信息(超实用!)

本文介绍了使用Python进行网络爬虫,通过拉勾网的职位搜索接口,抓取并解析职位信息,包括公司ID、公司全名、位置、薪资、公司规模、要求技能、发布时间和学历要求等关键数据。通过Session管理和请求延时策略避免被网站封禁,实现了分页数据的爬取。适合有一定Python基础并想学习爬虫的读者。
摘要由CSDN通过智能技术生成

# -*- encoding: utf-8 -*-

"""

"""

#  导入相应的包

import requests

import time

import json

from urllib.parse import quote

def get_page(url_start,url_parse,params,job):

#  创建一个session对象

s = requests.Session()

#  用session对象发出get请求,请求首页获取cookies

s.get(url_start, headers=headers, timeout=3)

#  获取此处的cookie

cookie = s.cookies

#  获取此次的文本

response = s.post(url_parse, data=params, headers=headers, cookies=cookie, timeout=3)

#  设置每次请求间隔5秒钟

time.sleep(5)

#  获取json格式的数据

json_data = json.loads(response.text)

#  从json数据中获取到数据的总数

total_Count = json_data['content']['positionResult']['totalCount']

print("搜索结果一共有:"+str(total_Count)+"条")

'''

拉勾网每页是15条数据,默认只有30页的信息,如果抓取信息的总数/15>30,就取30页

'''

if int(total_Count/15) < 30 :

page_number = int(total_Count/15)

else:

page_number = 30

#  根据页数决定方法调用的次数

for pn in range(1, page_number + 1):

get_info(url_start, url_parse, pn, job)

print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")

def get_info(url_start,url_parse,page_number,job):

print("正在爬取第"+str(page_number)+"页数据")

data = {

'first': 'false',

'pn': page_number, # 页数

'kd': job  # 搜索的关键字

}

#  创建一个session对象

s = requests.Session()

#  用session对象发出get请求,请求首页获取cookies

s.get(url_start, headers=headers, timeout=3)

#  获取此处的cookie

cookie = s.cookies

#  获取此次的文本

response = s.post(url_parse, data=data, headers=headers, cookies=cookie, timeout=3)

#  设置爬虫休眠5秒

time.sleep(5)

#  整理json格式

text = json.loads(response.text)

#  获取信息列表

info = text['content']['positionResult']['result']

for i in info :

# 获取公司id

print('公司id', i['companyId'])

# 获取公司全名

print('公司全名', i['companyFullName'])

# 获取位置

print('位置', i['city'])

# 获取薪资

print('薪资', i['salary'])

# 获取公司规模

print('公司所在人数', i['companySize'])

# 获取要求技能

print('所需技能', i['skillLables'])

# 招聘信息发布时间

print('信息发布时间', i['createTime'])

# 区域

print('所在区域', i['district'])

# 要求学历

print('要求学历', i['education'])

#  车站名称

print('车站名称', i['stationname'])

print("===========================================================")

if __name__ == '__main__':      #  主程序入口

job = input("欢迎来到拉勾网,请输入您想咨询的职位:")

# 想要在URL中拼凑中文,需要将中文内容进行【转码】,用16进制表示

job_transcode = quote(job)

print("job", job_transcode)

#  主url【要爬取数据页面首页】

url_start = "https://www.lagou.com/jobs/list_"+job_transcode+"/p-city_0?&cl=false&fromSearch=true&labelWords=&suginput="

#  ajax请求

url_parse = "https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false"

print(url_start)

params = {

'first': 'true',

'pn': '1',

'kd': job

}

# 加入请求头,伪装成浏览器

headers = {

'Accept': 'application/json, text/javascript, */*; q=0.01',

'Referer': 'https://www.lagou.com/jobs/list_'+job_transcode+'/p-city_undefined?&cl=false&fromSearch=true&labelWords=&suginput=',

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'

}

get_page(url_start, url_parse, params, job)

效果图

细心的小伙伴可能发现了,这次的爬虫程序跟上次分享的图片下载器完全不是一个级别的,怎么那么多处代码看不懂 ̄へ ̄其实很正常啦,因为爬虫的下限很低,上限极高。(如果每个网站的数据都那么好获取,那让该网站背后的程序员情何以堪)可能对于初学爬虫不久的学者来说,理解该次爬虫的过程比较的困难。但莫言先生曾经说过:

当你的才华还撑不起你的野心的时候,

你就应该静下心来学习;

当你的能力还驾驭不了你的目标时,

就应该沉下心来,历练。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值