Python 爬取拉勾招聘信息

Python 爬取拉勾招聘信息

故事背景

最近有个好哥们啊浪迫于家里工资太低,准备从北方老家那边来深圳这边找工作,啊浪是学平面设计的知道我在深圳这边于是向我打听深圳这边平面设计薪资水平,当时我有点懵逼这个行业不熟悉啊咋搞呢,准备打开招聘网站先看看再说打开网站输入招聘职位发先量还挺大,这样慢慢看不行啊效率太低啦,咋是程序员啊直接把数据拉下来不就行啦于是有啦这篇博客。

技术实现

用到的库

import os
import json
import urllib
import requests

页面分析

数据地址:https://www.lagou.com/

当我在 chrom 中输入拉勾网站查看页面源码时发现页面上的数据并没有直接显示在源码上。推断可能是使用 AJAX 异步加载数据,当我打开 chrom 开发者工具在 network 中查看 XHR 时发现一个 https://www.lagou.com/jobs/positionAjax.json?city=%E6%B7%B1%E5%9C%B3&needAddtionalResult=false 请求点开 response 果然数据都在这个请求中返回。

在这里插入图片描述

返回的数据格式如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NRpqsHcD-1605319503100)(/Users/wollens/Library/Application Support/typora-user-images/image-20201114094558145.png)]

可以发现我们需要的数据都存放在 result 中,于是准备直接获取数据但是使用 request 去模拟请求发现每次都会被拦截。因为拉勾在不登录的情况下浏览器也能获取数据应该不是用户级别的拦截,猜想可能是在 cookie 层面做的限制,发现请求没有携带网站的 cookie 直接拦截

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XG5ZUG2R-1605319503101)(/Users/wollens/Library/Application Support/typora-user-images/image-20201114095322932.png)]

获取请参数

def get_request_params(city, city_num):
    req_url = 'https://www.lagou.com/jobs/list_{}/p-city_{}?&cl=false&fromSearch=true&labelWords=&suginput='.format(urllib.parse.quote(city), city_num)
    ajax_url = 'https://www.lagou.com/jobs/positionAjax.json?px=default&city={}&needAddtionalResult=false'.format(urllib.parse.quote(city))
    headers = headers = {
   
        "Accept": "application/json, text/javascript, */*; q=0.01",
        "Referer": "https://www.lagou.com/jobs/list_{}/p-city_{}?px=default#filterBox".format(urllib.parse.quote(city), city_num),
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
                    "(KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36",
    }
    return req_url, ajax_url, headers

于是在 请求中加上 cookie, 代码如下:

def get_cookie(city):
    city_num = get_city_num_by_name(city)
    req_url, _, headers = get_request_params(city, city_num)
    s = requests.session<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的使用Python51job招聘信息的示例程序: ```python import requests from bs4 import BeautifulSoup url = 'https://search.51job.com/list/000000,000000,0000,00,9,99,python,2,1.html' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') job_list = soup.find_all('div', class_='el') for job in job_list: job_name = job.find('a', class_='t').text.strip() company_name = job.find('span', class_='t2').text.strip() location = job.find('span', class_='t3').text.strip() salary = job.find('span', class_='t4').text.strip() job_url = job.find('a', class_='t')['href'] print(job_name, company_name, location, salary, job_url) ``` 该程序使用requests库和BeautifulSoup库来获和解析51job网站的招聘信息页面。它首先构建了目标页面的URL,并使用requests库发送HTTP请求,然后使用BeautifulSoup库解析响应的HTML内容。程序从解析后的HTML中查找招聘信息的列表,然后使用循环迭代每个招聘信息,并从每个信息中提必要的信息,例如职位名称,公司名称,地点,薪资和招聘链接。最后,程序将提信息打印到控制台中。 需要注意的是,该示例程序只能第一页的招聘信息。如果需要更多的页面,需要修改URL中的页码参数。通过修改页码参数,可以实现更多页面的招聘信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值