BeautifulSoup爬取智联招聘数据

警告:
此项技术仅适用于练习,限制大量大规模爬取,在爬取中使用了个人cookie,请注意不要随意泄露,内含个人隐私信息!
如果过分爬取,会造成ip被封!

1.导入所需函数库

from bs4 import BeautifulSoup
import requests
import pandas as pd
import pymysql

2.爬取招聘数据

3.配置请求头

## USER_AGENT
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.134 Safari/537.36 Edg/103.0.1264.77'
## URL:网页从p=1 -> p=34
URL = 'https://sou.zhaopin.com/?jl=531&p=1'
## COOKIE
COOKIE = ''

4.数据请求

#网页请求
html=rq.get(url=URL,headers=headers,timeout = 30)
#字符集设置
html.encoding="utf-8"
#获取请求状态码
code=html.status_code
if code==200:print("网页请求成功")#网页数据解析page=bs(html.text,"html.parser")#获取岗位名称job_name=page.find_all("span",class_="iteminfo__line1__jobname__name")#获取岗位薪资job_salary=page.find_all("p",class_="iteminfo__line2__jobdesc__salary")#获取公司名称company_name=page.find_all("span",class_="iteminfo__line1__compname__name")#获取公司地址company_address=page.find_all("ul",class_="iteminfo__line2__jobdesc__demand")#公司介绍company_dec=page.find_all("div",class_="iteminfo__line2__compdesc")
else:print("网页请求失败")
print(job_name[1])
print(job_salary[1])
print(company_name[1])
print(company_address[1])
print(company_dec[1])
网页请求成功
<span class="iteminfo__line1__jobname__name" title="Java开发工程师"><span style="color: #FF5959;">Java开发</span>工程师</span><p class="iteminfo__line2__jobdesc__salary">6千-7千<!-- --></p><span class="iteminfo__line1__compname__name" title="耘盛祥荣(天津)科技创新产业发展有限公司">耘盛祥荣(天津)科技创新产业发展有限公司</span><ul class="iteminfo__line2__jobdesc__demand"><li class="iteminfo__line2__jobdesc__demand__item">天津-滨海新区</li> <li class="iteminfo__line2__jobdesc__demand__item">不限</li> <li class="iteminfo__line2__jobdesc__demand__item">大专</li></ul><div class="iteminfo__line2__compdesc"><span class="iteminfo__line2__compdesc__item">其它 </span> <span class="iteminfo__line2__compdesc__item">20-99人 </span></div>

5.定义函数

# 用来获取网页body标签内容的方法
def get_body_text(url):try:headers = {'User-Agent':USER_AGENT, 'Cookie':COOKIE.encode("utf-8").decode("latin1")}req = requests.get(url = url, headers = headers, timeout = 30)# 若状态码不是200,则抛出异常req.raise_for_status()req.encoding = 'UTF-8'except Exception as e:print('爬取错误', e)else:print(req.url, '爬取成功')return BeautifulSoup(req.text, 'html.parser')

6.数据爬取

## 从一个 job_info_block 中提取出所需信息的方法
#数据库配置
conn = pymysql.connect(host="localhost",port=3306,user="root",passwd="root",db="invite_data" )
#使用cursor()方法获取操作游标
cursor = conn.cursor()
def find_info(job_info):# 添加职位名称jobName=job_info.find('span', {'class':'iteminfo__line1__jobname__name'}).get_text()# 添加薪资salaryDesc=job_info.find('p', {'class':'iteminfo__line2__jobdesc__salary'}).get_text().replace(' ','').replace('\n','')# 添加工作要求jobLabels=job_info.find_all('li', {'class':'iteminfo__line2__jobdesc__demand__item'})[1].get_text()# 添加技能要求skills=str(job_info.find_all('div', {'class':'iteminfo__line3__welfare__item'}))# 添加经验要求jobExperience=job_info.find_all('li', {'class':'iteminfo__line2__jobdesc__demand__item'})[2].get_text()# 添加工作地址cityName=job_info.find_all('li', {'class':'iteminfo__line2__jobdesc__demand__item'})[0].get_text()# 添加公司名称brandName=job_info.find('span', {'class':'iteminfo__line1__compname__name'}).get_text()sql="INSERT INTO job_list (jobName, salaryDesc, jobLabels, skills, jobExperience, cityName, brandName) VALUES (%s,%s,%s,%s,%s,%s,%s)"param=(jobName, salaryDesc, jobLabels, skills, jobExperience, cityName, brandName)cursor.execute(sql,param)# 提交conn.commit()

7.定义主函数

def main():BASE_URL = 'https://sou.zhaopin.com/?jl=531&p='PAGE = 1## 定义一个列表用来存储职位信息job_list = []while PAGE <= 34:# 拼接URLURL = BASE_URL + str(PAGE)# 发送请求,获取当前页的HTML文本body = get_body_text(URL)# 获取当前页中的所有job_info代码块job_infos = body.find_all('a', {'class' : 'joblist-box__iteminfo'})# 循环info_block_list,把处理后的job_info添加到job_list中for job_info in job_infos:job_list.append(find_info(job_info))job_list.to_txt(f'../data/json/zhaoping2{PAGE}.txt')PAGE += 1

8.主启动器

if __name__ == '__main__':main()

BeautifulSoup爬取智联招聘数据相关推荐

  1. 深圳python数据分析师招聘_Python爬取智联招聘数据分析师岗位相关信息的方法

    Python爬取智联招聘数据分析师岗位相关信息的方法 发布时间:2020-09-23 23:23:12 来源:脚本之家 阅读:88 进入智联招聘官网,在搜索界面输入'数据分析师',界面跳转,按F12查 ...

  2. 实战案例 | Scrapy 集成Selenium爬取智联招聘数据

    人生苦短,快学Python! 初学scrapy之后,发现就是效率对比于selenium和requests快了很多,那么问题来了,如果网站设置了反爬,比如User-Agent反爬,cookie反爬,IP ...

  3. python爬虫实例之爬取智联招聘数据

    这是作者的处女作,轻点喷.... 实习在公司时领导要求学习python,python的爬虫作为入门来说是十分友好的,话不多说,开始进入正题. 主要是爬去智联的岗位信息进行对比分析出java和pytho ...

  4. 爬取智联招聘信息并存储

    #-*- coding: utf-8 -*- import urllib.request import os,time from bs4 import BeautifulSoup #爬取智联招聘网站的 ...

  5. xpath爬取智联招聘--大数据开发职位并保存为csv

    先上项目效果图: 本次爬取的URL为智联招聘的网址:https://www.zhaopin.com/ 首先先登录上去,为了保持我们代码的时效性,让每个人都能直接运行代码出结果,我们要获取到我们登录上去 ...

  6. python爬虫多url_Python爬虫实战入门六:提高爬虫效率—并发爬取智联招聘

    之前文章中所介绍的爬虫都是对单个URL进行解析和爬取,url数量少不费时,但是如果我们需要爬取的网页url有成千上万或者更多,那怎么办? 使用for循环对所有的url进行遍历访问? 嗯,想法很好,但是 ...

  7. Python爬虫爬取智联招聘职位信息

    目的:输入要爬取的职位名称,五个意向城市,爬取智联招聘上的该信息,并打印进表格中 #coding:utf-8 import urllib2 import re import xlwtclass ZLZ ...

  8. scrapy爬取智联招聘

    我想分析下互联网行业全国招聘实习生的情况,通过爬取智联招聘,得到15467条数据,并导入Mysql 在items.py里: import scrapy from scrapy.http import ...

  9. 克服反爬虫机制爬取智联招聘网站

    一.实验内容 1.爬取网站: 智联招聘网站(https://www.zhaopin.com/) 2.网站的反爬虫机制:     在我频繁爬取智联招聘网站之后,它会出现以下文字(尽管我已经控制了爬虫的爬 ...

最新文章

  1. vbyone接口引脚定义_一文了解A、B、C、D、E 5 种HDMI接口类型!网友:今天总算明白了...
  2. 线程,代码和数据–多线程Java程序实际运行的方式
  3. c语言动态指针数组--一种伪二维数组
  4. /proc/sysrq-trigger的使用
  5. 彼得·德鲁克 : 管理自己
  6. 关于Linux/kernel.h中的offsetof和container_of宏
  7. 应用常驻后台?需要用户对手机做配置
  8. Air202入坑指南2---LED闪烁
  9. 2019重庆大学计算机学院研究生,【计算机】计算机学院举行2019级研究生年级大会...
  10. LUAT游戏第一弹---贪吃蛇
  11. 7.5 《丰田模式》阅读笔记和感悟
  12. 利用反病毒软件开展恶意活动:Dharma勒索软件分析
  13. LeetCode 149 直线上最多的点数
  14. 数据库的视图定义及使用
  15. 如何实现超大文件上传?
  16. Android之多个View同时动画
  17. r语言归一化_生物信息学之RMA(Robust Multi-Array Average)算法的归一化和最终计算过程...
  18. 商汤绝影再下一城,赋能本田中国首款纯电系列新车发布
  19. thickBox参数详解
  20. 微型计算机内部安徽一词占几个字节,安徽理工大学计算机题库.doc

热门文章

  1. 微信小程序内嵌h5页面或者跳转至外部链接,及在webview页面添加元素
  2. android 实时录音播放,android 使用 audiorecord 和 audiotrack 实现实时录音播放
  3. 基于Keras的Python实践 3 chapter 印第安人糖尿病诊断
  4. 链表4:合并有序链表的3道题
  5. 大米“绑上”区块链,江苏为农产品上“身份证”
  6. 计算机课程制作月历,【信息技术】《制作月历》教学反思
  7. el-select下拉加载(实现懒加载)自定义loadmore事件
  8. echarts 怎么获取乡镇街道json
  9. 活动抽奖Java抽奖算法
  10. standards of 4 pole headset OMTP/CTIA