记一次拉钩网爬虫

本文介绍了一种使用Python爬取拉勾网上广州地区Web前端职位信息的方法,包括职位名称、公司、薪资等详细信息,并将数据保存为CSV文件。文章详细讲解了如何通过requests和session会话管理进行网页爬取,以及如何解析JSON数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#coding:utf-8
import requests
import csv
import time
# 爬取链接
url = 'https://www.lagou.com/jobs/positionAjax.json?city=%E5%B9%BF%E5%B7%9E&needAddtionalResult=false'
# 头部信息
headers = {
  'Accept' : 'application/json, text/javascript, */*; q=0.01',
  'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',
  'Referer' : 'https://www.lagou.com/jobs/list_web%E5%89%8D%E7%AB%AF/p-city_213?&cl=false&fromSearch=true&labelWords=sug&suginput=web'
}

#页码 
Form_data = {
  'first' : 'true',
  'pn' : 1,
  'kd' : 'web前端'
}

# 创建会话获取cookie 并且cookie要用在该会话中
s = requests.session()
url_list = 'https://www.lagou.com/jobs/list_web%E5%89%8D%E7%AB%AF/p-city_213?&cl=false&fromSearch=true&labelWords=sug&suginput=web'
s.get(url_list,headers=headers)
cookie = s.cookies
# 传入参数 页码
# 输出 该页爬取到的数据
def get(page):
  Form_data['pn'] = page
  response = s.post(url,headers=headers,cookies=cookie,data=Form_data,timeout=3)
  job_list = response.json()
  job_result = job_list["content"]['positionResult']
  csv_data = []
  for k in range(0,job_result['resultSize']):
    job_info = []
    i = job_result['result'][k]
    job_info.append(i['positionName'])  # 职位
    job_info.append(i['companyShortName'])  # 公司
    job_info.append(i['salary'])    # 薪资
    job_info.append(i['education'])  # 学历
    job_info.append(i['district'])  # 位置
    job_info.append(i['workYear'])  # 工作经验要求
    job_info.append(i['positionAdvantage'])  # 福利待遇
    csv_data.append(job_info)
  #数据保存到csv文件中
  csvfile = open('软件职业.csv', 'a+',encoding='utf-8-sig',newline='')
  writer = csv.writer(csvfile)
  writer.writerows(csv_data)
  csvfile.close()
  return csv_data

if __name__ == '__main__':
  a = [('职位','公司','薪资','学历','位置','工作经验要求','福利待遇')]
  csvfile = open('软件职业.csv', 'a+',encoding='utf-8-sig',newline='')
  writer = csv.writer(csvfile)
  writer.writerows(a)
  csvfile.close()
  all_compay = []
  # 爬取30页
  for page_num in range(1, 31):
      result = get(page=page_num)
      all_compay += result
      print('已抓取{}页, 总职位数:{}'.format(page_num, len(all_compay)))
      time.sleep(20) #爬虫请求频率太高容易被封ip

爬取链接:https://www.lagou.com/jobs/positionAjax.json?city=%E5%B9%BF%E5%B7%9E&needAddtionalResult=false

爬虫要点:

1、找请求:

2、找请求中的重要信息

你做到这一步会发现在postman模拟请求失败,显示超时

这是什么情况呢?

因为这个拉勾网做的是session请求,所以他的cookie需要对应他的会话session。

所以需要自己创建session会话去获取cookie!!!

 

参考:爬取拉勾网职业信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值