(python爬虫)拉勾网招聘信息爬取
拉勾网招聘岗位爬虫项目
本次爬取数据为python岗位信息,并非用于商业渠道的,只是新手上路练练手,代码如有问题,请多多指教,谢谢。
项目介绍:
爬取网站:拉勾网
URL:https://www.lagou.com/
爬取关键词:python
技术路线:selenium+bs4+time+re+xlwt
爬取时间:2020.08.11
作者:YRH
1.导入库
from selenium import webdriver
from bs4 import BeautifulSoup
import time
import re
import xlwt
2.创建浏览器对象并访问网站
driver = webdriver.Chrome() # 创建一个chrome实例
driver.get("https://www.lagou.com/") # 传入网站
3.完整代码
# -*- coding: utf-8 -*-
# Author : YRH
# Data : 2020.08.11
# Project : 拉勾网爬取python招聘岗位
# Tool : PyCharmfrom selenium import webdriver
from bs4 import BeautifulSoup
import time
import re
import xlwtdriver = webdriver.Chrome() # 创建一个chrome实例
driver.get("https://www.lagou.com/") # 传入网站# 网页爬取函数
# 主要负责解决页面弹窗处理功能
# 招聘信息的输入和也面的切换
# 将HTML提出并且调用解析函数进行信息提取
def getHtml():info = [] # 存放信息列表time.sleep(0.5)# 由于会弹出一个定位选择框,所以要进行选择一些,否则下面无法进行try:if driver.find_element_by_id("cboxLoadedContent"):driver.find_element_by_id("cboxClose").click()except:passtime.sleep(0.5)# 找出输入框位置并且输入招聘关键词inpText = driver.find_element_by_id("search_input")inpText.send_keys("python")driver.find_element_by_id("search_button").click()time.sleep(1)# 处理弹出广告try:if driver.find_element_by_class_name("body-box"):driver.find_element_by_class_name("body-btn").click()except:passcount = 1# 第一页try:html = driver.page_sourcehtml = str(html).replace(u"\u2002", "").replace(u"\xa9", "")parse(html, info)print("成功爬取第" + str(count) + "页")count += 1except:print("Failed to get page " + str(count))count += 1# 获取第二页到尾页panduan = 1while panduan == 1:if count <= 30:driver.find_element_by_class_name("pager_next ").click()time.sleep(2)html = driver.page_sourcehtml = str(html).replace(u"\u2002", "").replace(u"\xa9", "")parse(html, info)print("成功爬取第" + str(count) + "页")count += 1else:panduan = 0print("爬虫程序执行完成")saveData(info) # 调用数据保存函数进行数据保存driver.close() # 关闭浏览器页面# 信息提取函数
# 主要将信息进行解析提取
def parse(html, infoList):soup = BeautifulSoup(html, "lxml")try:# 由于每一页只有14个招聘信息,所以要使用循环来给每一个li的属性"data-index赋值# 因为每个招聘信息的li标签都没有相同的属性值,所以只能这样子了a = 1while a <= 14:ul = soup.find("ul", class_='item_con_list').find_all_next("li", {"data-index": str(a)})for li in ul:# 岗位名称try:name = li.find("a", class_="position_link").find_next("h3").textexcept:name = " "# 地址try:address = li.find("span", class_='add').textaddress = str(address).replace("[", "").replace("]", "")except:address = " "try:text = li.find("div", class_='li_b_l').text# 提取学历要求,因为在一起提取是提取不了,所以学历只能另外提取education = re.findall(r"(大专|本科|硕士|博士|不要求|不限)", text)if len(education) >= 1:education = education[0]else:education = " "# 提取薪资,经验要求text = re.findall(r"(.*?)\n(.*?)/", text, re.X)if len(text[0]) == 2:money = text[0][0]experience = text[0][1]else:money = " "experience = " "except:education = " "money = " "experience = " "# 公司名称try:company = li.find("div", class_='company_name').find_next("a").textexcept:company = " "# 将岗位名称、公司地址、学历要求、薪资、经验要求、公司名称存放到列表中infoList.append([name, address, education, money, experience, company])a += 1except:print("招聘信息个数有变化")# 数据保存
# 数据保存至外部文件excel
def saveData(infoList):print("save........")workbook = xlwt.Workbook(encoding="utf-8") # 创建workbook对象movieBook = workbook.add_sheet("sheet1") # 创建工作表head = ["岗位名称", "公司地址", "学历要求", "薪资", "经验要求", "公司名称"]for i in range(0, len(head)):movieBook.write(0, i, head[i]) # 参数1是行,参数2是列,参数3是值# 数据逐行输入y = 1for a in infoList:for x in range(0, len(a)):movieBook.write(y, x, a[x])y += 1print("总共保存了" + str(y) + "家招聘信息")print("数据保存成功")print("数据保存程序执行完毕")workbook.save("拉勾网招聘信息.xls") # 保存数据表if __name__ == '__main__':getHtml()
5.爬取结果部分截图
新手路上,请多多指教
(python爬虫)拉勾网招聘信息爬取相关推荐
- Python 爬虫 中国行政区划信息爬取 (初学者)
Python 爬虫 中国行政区划信息爬取 (初学者) 背景 环境准备 代码片段 1.定义地址信息对象 2.地址解析对象 2.1 获取web信息 2.2 web信息解析 2.3 区划信息提取 2.4 省 ...
- python拉勾网招聘信息爬取(单线程,最新)
一.任务描述 爬取拉勾网发布的关于"会计"岗位的招聘信息,通过查询相关文章发现,普遍都是使用单线程对网站信息进行爬取,且拉勾网经过多次维护更新,对简单的爬取代码有反爬虫机制,例如不 ...
- 【2020-10-27】 scrapy爬虫之猎聘招聘信息爬取
声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! scrapy爬虫之猎聘招聘信息爬取 1.项目场景 目标网址:https://www.liepin.com/zhao ...
- python爬虫(一)爬取豆瓣电影排名前50名电影的信息
python爬虫(一)爬取豆瓣电影排名前50名电影的信息 在Python爬虫中,我们可以使用beautifulsoup对网页进行解析. 我们可以使用它来爬取豆瓣电影排名前50名的电影的详细信息,例如排 ...
- 转 Python爬虫实战一之爬取糗事百科段子
静觅 » Python爬虫实战一之爬取糗事百科段子 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致 ...
- python爬虫 豆瓣影评的爬取cookies实现自动登录账号
python爬虫 豆瓣影评的爬取cookies实现自动登录账号 频繁的登录网页会让豆瓣锁定你的账号-- 网页请求 使用cookies来实现的自动登录账号,这里的cookies因为涉及到账号我屏蔽了,具 ...
- python爬虫实战之多线程爬取前程无忧简历
python爬虫实战之多线程爬取前程无忧简历 import requests import re import threading import time from queue import Queu ...
- python爬虫第二弹-多线程爬取网站歌曲
python爬虫第二弹-多线程爬取网站歌曲 一.简介 二.使用的环境 三.网页解析 1.获取网页的最大页数 2.获取每一页的url形式 3.获取每首歌曲的相关信息 4.获取下载的链接 四.代码实现 一 ...
- Python爬虫实战一之爬取糗事百科段子
点我进入原文 另外, 中间遇到两个问题: 1. ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128) 解 ...
- Python爬虫入门 | 7 分类爬取豆瓣电影,解决动态加载问题
比如我们今天的案例,豆瓣电影分类页面.根本没有什么翻页,需要点击"加载更多"新的电影信息,前面的黑科技瞬间被秒-- 又比如知乎关注的人列表页面: 我复制了其中两个人昵称 ...
最新文章
- python emoji 表情处理过滤
- centos7启动与切换图形界面
- fastjson对json字符串JSONObject和JSONArray互相转换操作示例
- [css] pseudo-class与pseudo-element有什么区别?
- 给未来的自己一封信计算机,给未来的自己的一封信范文(精选5篇)
- mysql 批量替换域名_msyql 中批量替换url网址中的域名方案。
- gcc和arm-linux-gcc区别
- Java小游戏程序打包成exe文件
- 微信小程序使用图标库
- De Casteljau算法
- Windows 利用DbgView 查看内核打印日志
- 世界地图新西兰_世界地图新西兰的位置在哪里?新西兰与澳大利亚相隔多远?...
- 计算机取消右键粘贴,复制粘贴文件后鼠标右击取消粘贴功能的简单方法介绍
- MSN关闭前爆发盗号“高潮” 中国用户面临选择
- VS2005中(_CRT_SECURE_NO_DEPRECATE)警告
- 格力手机2 官方固件_ROG游戏手机2备货不足,官方发表致歉信
- docker: Error response from daemon: Conflict. The container name “/mysql“ is already in use by conta
- 基于JAVA网上家教信息管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
- 数据结构笔记(六)——散列(Hash Table)之双散列和再散列(4)
- MySQL中delete结合exist删除数据
热门文章
- MapReduce 内部实现机制,你真的懂吗?
- 万年历源代码 c语言基础,C语言万年历的源程序
- 无法使用内置管理员账户打开Microsoft Edge
- 推广的euclid_欧几里得(Euclid)与拓展的欧几里得算法
- 上海南京路步行街向全球征集标识Logo及吉祥物设计
- 【渝粤教育】国家开放大学2018年秋季 1355T高级英语(2) 参考试题
- 智能证件录入系统——电子护照阅读器
- 【数据库系统原理】第四章 高级数据库模型:统一建模语言UML、对象定义语言ODL
- Amnesia失忆症攻略(本篇+later+crowd)
- linux的wifi探针源码,运用在公共安全领域的WiFi探针