python项目(一)——爬虫爬取拉勾网职位信息

一.目标

爬取拉勾网指定城市的指定职位的一定数据。

二.网站解析

1.url解析
以在拉勾网寻找linux工程师工作为例:
在这里插入图片描述
网址是
https://www.lagou.com/jobs/list_linux?labelWords=&fromSearch=true&suginput=
但是详细分析之后可以发现?后面的参数去除也可以得到相应的html,
即 https://www.lagou.com/jobs/list_linux?这个网址也是可以得到想应的网站的
在这里插入图片描述
2.分析返回的数据类型是html格式还是json格式
打开chrome的开发者工具,检查网站的详细信息。
在这里插入图片描述
可以看到xhr中有一个positionAjax的json文件,点开preview查看里面的内容,发现了有我们需要的职位信息:
在这里插入图片描述
那也就是说这个页面的职位信息应该是通过Ajax请求然后服务器返回的json数据通过js渲染而成的。我对于Ajax请求的理解是:传统的网页更新时,需要刷新页面,使用Ajax后,通过js文件向服务器发送请求,然后得到的数据动态的渲染更新页面。(如果后面发现理解错了,会及时来这里更新)
3.分析headers,拿到json数据
点击headers,可以看到这是一个post类型的请求,表单数据form data可以下拉到最下面得到,查看request url,可以试着再另外的标签页中打开url,会发现和往常的json文件不同,这个链接打开后得不到我们想要的数据,并且会返回一个您的访问次数过多的错误。在这里插入图片描述
这里可能就是触发了网站的反爬机制,常见的反爬措施就是cookies校验,请求头的验证什么的,我们在python中使用requests包的session模块尝试一下后会发现要想拿到这个网站的数据,一个是要得到起始搜索页面的cookies,然后还要定制请求头。
(1)得到cookies并不能得到要的数据
在这里插入图片描述
(2)修改headers后添加referer后,可以拿到数据
请求头中rederer的作用就是标识这个请求从哪里来的,服务器可以拿到这个信息并做相应的处理,这里就说明了这个请求是从搜索页面来的,所以单独打开一个标签去访问那个request url拿不到结果。
在这里插入图片描述
4.分析拿到的json数据,取出我们想要的数据
通过json包的loads()方法来得到数据,至此单个页面的数据分析差不多就结束了。
在这里插入图片描述

三.代码实现

# /usr/env/bin/python3
# -*-coding: utf-8 -*-


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你写一个Python爬虫代码,使用requests和BeautifulSoup库来爬取拉勾职位信息。以下是代码: ```python import requests from bs4 import BeautifulSoup def get_job_info(url): response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') job_name = soup.select('.job-name')[0].text.strip() salary = soup.select('.job_request .salary')[0].text.strip() experience = soup.select('.job_request p')[1].text.strip() education = soup.select('.job_request p')[2].text.strip() tags = [tag.text.strip() for tag in soup.select('.position-label li')] company = soup.select('.company')[0].text.strip() return {'Job': job_name, 'Salary': salary, 'Experience': experience, 'Education': education, 'Tags': tags, 'Company': company} def get_jobs_list(city, keyword, pages=1): jobs_list = [] for page in range(1, pages+1): url = f'https://www.lagou.com/{city}/zhaopin/{keyword}/{str(page)}/?filterOption=3' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') job_items = soup.select('.itemcon') for job in job_items: job_url = job.select('.positionlink')[0].get('href') job_info = get_job_info(job_url) jobs_list.append(job_info) return jobs_list jobs = get_jobs_list('beijing', 'python', pages=2) for job in jobs: print(job) ``` 该爬虫代码可以爬取拉勾北京地区Python职位信息。你可以替换city和keyword变量的值来搜索其他城市和职位需求。pages参数是可选的,默认为1,如果设置为2,则爬取前两页的职位信息。 以上是该爬虫代码的实现,如果你有其他问题,可以随时问我。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值