爬虫抓取51Job职位_生成表格(找工作的看过来)_一蓑烟雨任平生

[Python] scrapy + selenium 抓取51job 职位信息(实现 传参 控制抓取 页数+职位名称+城市) 目录 一、目标 二、51job网页分析: 1.网页构成观察 2.网页分析 三、代码实现 1. 踩过的坑-----实现城市选择 2.代码实现 3.代码优化 1)存放格式优化 2)在爬虫中去掉\xa0\xa0 3)用normalize-space(节点)去掉\r\n\t 4.pipelines.py 定义存储 一、目标 实现 通过传参(职位和地区)控制抓取51... 阅读详情


前言

没啥好说的直接上源码吧

源码如下:

import easygui
import requests
import re
import xlwt
from urllib import parse
from tkinter import messagebox
from tkinter import *


# 主函数
def main():
    top = Tk()
    top.withdraw()
    savepath = "51.xls"  # 定义保存路径
    book = xlwt.Workbook(encoding="utf-8", style_compression=0)  # 创建workbook对象
    sheet = book.add_sheet('51job岗位信息', cell_overwrite_ok=True)  # 创建工作表

    # 关键字二次转译
    kw = easygui.multenterbox('51招聘', 'Python爬取招聘信息',
                              fields=['请输入你要搜索的岗位关键字:'],
                              values=[''])
    keyword = parse.quote(parse.quote(str(kw)))
    pageNum = 0

    for i1 in range(0, 10):  # 爬取前10页
        pageNum += 1

        url = "https://search.51job.com/list/000000,000000,0000,00,9,99," + keyword + ",2," + str(pageNum) + ".html"
        page_text = getUrl(url)
        all_list = getDate(page_text)
        if len(all_list[0]) == 0:
            print('没有搜索到职位信息')
            break
        else:
            print('正在爬取第%d页' % pageNum)
            saveDate(sheet, all_list, pageNum, book, savepath, searchNum=len(all_list[0]))


# 获取一个列表页
def getUrl(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36'
    }

    # 使用通用爬虫对url进行一页进行爬取
    page_text = requests.get(url=url, headers=headers).text  # 一页源码用text
    # print(page_text)

    return page_text


# 获取列表页的所有岗位信息
def getDate(page_text):
    # 正则表达式提取岗位信息
    jobHref = '"job_href":"(.*?)"'  # 岗位链接
    jobName = '"job_name":"(.*?)"'  # 岗位名称
    comHref = '"company_href":"(.*?)"'  # 公司链接
    comName = '"company_name":"(.*?)"'  # 公司名称
    salary = '"providesalary_text":"(.*?)"'  # 薪资水平
    companytype = '"companytype_text":"(.*?)"'  # 公司类型
    attribute = '"attribute_text":\[(.*?)\]'  # 招聘条件
    workarea = '"workarea_text":"(.*?)"'  # 工作地点
    companysize = '"companysize_text":"(.*?)"'  # 公司规模
    companyind = '"companyind_text":"(.*?)"'  # 主要业务
    jobwelf = '"jobwelf":"(.*?)"'  # 福利待遇

    # 第一个参数是规则,第二个参数是被检索内容,第三个参数re.S是单行匹配
    jobHref_list = re.findall(jobHref, page_text, re.S)
    jobName_list = re.findall(jobName, page_text, re.S)
    comHref_list = re.findall(comHref, page_text, re.S)
    comName_list = re.findall(comName, page_text, re.S)
    salary_list = re.findall(salary, page_text, re.S)
    companytype_list = re.findall(companytype, page_text, re.S)
    attribute_list = re.findall(attribute, page_text, re.S)
    workarea_list = re.findall(workarea, page_text, re.S)
    companysize_list = re.findall(companysize, page_text, re.S)
    companyind_list = re.findall(companyind, page_text, re.S)
    jobwelf_list = re.findall(jobwelf, page_text, re.S)

    searchNum = len(jobHref_list)
    # print(jobName_list)
    # print(comHref_list)
    # print(comName_list)
    # print(salary_list)
    # print(companytype_list)
    # print(attribute_list)
    # print(workarea_list)
    # print(companysize_list)
    # print(companyind_list)
    # print(jobwelf_list)

    all_list = [jobHref_list, jobName_list, comHref_list, comName_list, salary_list,
                companytype_list, attribute_list, workarea_list, companysize_list,
                companyind_list, jobwelf_list]

    return all_list


# 储存到excel表格中
def saveDate(sheet, all_list, pageNum, book, savepath, searchNum):
    col = ("岗位链接", "岗位名称", "公司链接", "公司名称", "薪资水平", "公司类型", "招聘条件", "工作地点", '公司规模', '主要业务', '福利待遇')
    for i2 in range(0, 11):
        sheet.write(0, i2, col[i2])  # 列名
    for i3 in range(0, searchNum):
        b = (all_list[0])[i3]
        c = (all_list[1])[i3]
        d = (all_list[2])[i3]
        e = (all_list[3])[i3]
        f = (all_list[4])[i3]
        g = (all_list[5])[i3]
        h = (all_list[6])[i3]
        j = (all_list[7])[i3]
        k = (all_list[8])[i3]
        l = (all_list[9])[i3]
        m = (all_list[10])[i3]

        if pageNum >= 1 and searchNum <= 50:
            print("第%d条输入完成" % ((pageNum - 1) * 50 + (i3 + 1)))
            sheet.write((pageNum - 1) * 50 + (i3 + 1), 0, b)
            sheet.write((pageNum - 1) * 50 + (i3 + 1), 1, c)
            sheet.write((pageNum - 1) * 50 + (i3 + 1), 2, d)
            sheet.write((pageNum - 1) * 50 + (i3 + 1), 3, e)
            sheet.write((pageNum - 1) * 50 + (i3 + 1), 4, f)
            sheet.write((pageNum - 1) * 50 + (i3 + 1), 5, g)
            sheet.write((pageNum - 1) * 50 + (i3 + 1), 6, h)
            sheet.write((pageNum - 1) * 50 + (i3 + 1), 7, j)
            sheet.write((pageNum - 1) * 50 + (i3 + 1), 8, k)
            sheet.write((pageNum - 1) * 50 + (i3 + 1), 9, l)
            sheet.write((pageNum - 1) * 50 + (i3 + 1), 10, m)
        elif pageNum == 1 and searchNum < 50:
            print("第%d条输入完成" % (i3 + 1))
            sheet.write((i3 + 1), 0, b)
            sheet.write((i3 + 1), 1, c)
            sheet.write((i3 + 1), 2, d)
            sheet.write((i3 + 1), 3, e)
            sheet.write((i3 + 1), 4, f)
            sheet.write((i3 + 1), 5, g)
            sheet.write((i3 + 1), 6, h)
            sheet.write((i3 + 1), 7, j)
            sheet.write((i3 + 1), 8, k)
            sheet.write((i3 + 1), 9, l)
            sheet.write((i3 + 1), 10, m)

    book.save(savepath)


if __name__ == '__main__':
    main()
    messagebox.showinfo("提示", "爬取岗位完成,点开表格查看")

看下效果:

在这里插入图片描述

总结

在这里插入图片描述

爬取招聘数据 | scrapy 前程无忧51job 目录1. 预备知识2. 抓取目标结构3.抓包分析3.1 抓包分析url地址3.2 分析页码规律3.3分析数据存储位置4. 正则表达式的应用5. 代码编写5.1 start_requests5.2 正则提取数据5.3 提取职位的详情信息 1. 预备知识 python语言,scrapy爬虫基础,正则表达式 2. 抓取目标结构 职位列表中的以下信息: 点击职位,进入职位详情页中,提取以下信息: 3.抓包分析 3.1 抓包分析url地址 先进入到我们的页面中来,选择想要爬取的城市,url地址会发生相应的变化 阅读详情

相关推荐

Python网络爬虫(一):爬取51job前程无忧网数据并保存至MongoDB数据库

Python网络爬虫(一):爬取51job前程无忧网数据并保存至MongoDB数据库 参考博客:链接: link. 版本:Python3.7 编辑器:PyCharm 数据库:MongoDB 整体思路:1.对51job进行网页分析 2.主页上四大类即互联网/电子商务、金融/投资/证券、汽车及零配件、房地产 3.打开网页,选择合适的方法导入内容 4.针对反爬做出修改 写在今天工作后的事,复盘、复盘、复...

qq_33718148的博客 2833

爬虫_抓取51job招聘数据

# https://search.51job.com/list/000000,000000,0000,00,9,99,%25E6%2595%25B0%25E6%258D%25AE%25E5%2588%2586%25E6%259E%2590%25E5%25B8%2588,2,1.html #requests+lxml+pymysql+chardet import requests from lxml...

lzay的博客 1846

爬虫-简单抓取51job特定数据

#coding:utf-8 import urllib2 import re def search(name): url="https://search.51job.com/list/000000,000000,0000,00,9,99,"+name+",2,1.html?lang=c&amp;stype=&amp;postchannel=0000&amp;workyear=99&amp...

高智商坏蛋的博客 2103

记一次爬虫学习(爬取51job)

51job上岗位爬取及分析 综合应用所学的python语言知识,设计完成一个爬虫。 (1)请求网页,先获取所有招聘信息的详情url地址; (2)通过对爬取数据的分析确定要提取的内容(职位,发布日期,工资,工作地点,工作经验,学历要求,招聘人数,公司类别,公司规模); (3)保存数据为csv文件; (4)对csv文件内的数据进行分析 (5)用可视化的图表表现出来。 需求分析 每到毕业季,找工作就成了一个重要的事,大量的信息让应聘者眼花缭乱,对此可以制作一个爬虫,自动爬取51job网站上的应聘者感兴趣的相关职位

crush的博客 2603

Python实现51job职位信息爬虫实战

Python爬虫是一种自动化网络数据收集工具,它通过模拟用户浏览网页的行为,从互联网上抓取信息。一个基本的爬虫包括以下几个步骤:发送HTTP请求获取网页内容、解析网页提取有用数据、存储提取的数据至文件或数据库。

weixin_32661831的博客 839

爬取51job网站招聘信息

这是一个爬取51job招聘网站的代码,可以输入关键字爬取想要的各个职业的招聘信息,根据页码爬取制定页数的信息,可以选择存储到TXT,mongodb或者mysql中,代码简单易懂,可阅读性高

Python数据分析与爬虫

本课程主要讲解Python基础、数据分析扩展包Numpy、pandas、matplotlib,Python读取MySQL数据,Python爬虫及Scrapy框架,无监督机器学习算法聚类分析等,以及案例:互联网金融行业客户价值分析等。

51job网站信息爬取.zip

采用Python爬取前程无忧网站的职位信息,采用mysql数据库。职位 属性:职位类型、薪资、工作城市、公司名称、招聘人数等等。 资源包含:python代码、数据库建表语句、已经爬取的6万多条职位数据

Python爬虫大作业+数据可视化分析(抓取python职位)

抓取python岗位信息,并制作可视化

Jhoonyp的博客 2万+

Ubuntu 22.04下Realtek R8125网卡驱动安装避坑指南(附DKMS自动编译配置)

本文详细介绍了在Ubuntu 22.04系统上为Realtek R8125 2.5GbE网卡安装驱动的完整流程与避坑指南。针对内核通用驱动r8169的冲突问题,重点讲解了如何通过DKMS(Dynamic Kernel Module Support)实现驱动的持久化自动编译与安装,确保系统内核升级后网卡驱动依然有效。内容包括环境准备、驱动源码获取、DKMS标准配置、驱动冲突解决(设置黑名单)以及日常维护与故障排查方法,旨在为用户提供一个一劳永逸的稳定解决方案。

echo99的专栏 1022

【成功安装】Ubuntu22.04极简方式安装Nvidia驱动

今天下午安装了实机的Ubuntu,面临在Linux上安装Nvidia的问题,被这个问题困扰了一整个下午,各种报错整的我头大。后来发现了不需要按照传统的方式去Nvidia官网下载,再命令行安装,直接在线安装即可。

清筱明的博客 5345

利用Python爬取前程无忧(51job)上的招聘岗位

爬取数据集 整理后数据集 开始之前先了解一下什么是网络爬虫,百度百科对于网络爬虫的解释是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。也就是相当于我做一个机器人,我让它上网帮我找大量的资料。我要告诉他我想要什么数据,怎么找,是从一个网站找,还是好多网站一起找,数据中要包含什么属性,以上就是我们所讲的爬取策略。这其中要学习一些网络结构的内容,请读者自行参阅HTML的相关文献,非常简单。...

qixinlei的博客 1万+

PEMFC电化学入门:从电流密度到Tafel公式的实战计算指南

本文详细介绍了PEMFC电化学的基础知识,从电流密度计算到Tafel公式的应用,提供了实战计算指南。通过代码示例和常见问题排查,帮助工程师快速掌握燃料电池性能优化的关键参数,如交换电流密度和活化损失计算,适用于汽车动力和分布式发电等领域。

weixin_29229055的博客 550

爬虫——Python 爬取51job 职位信息

既然要爬取职位信息,那么首先要弄清楚目标页面的分布规律。 输入职位关键词和相应的地点等条件,然后搜索就可以看到岗位信息。 首先通过翻页来查看url的变化,以此来找到翻页时url的规律 把前面几页的url 复制下来放到文本文档里对比 不难发现除了页码外其他都没有改变 下面开始代码 # 导入相应的包 #-*-coding:utf-8-*- from bs4 import BeautifulSoup...

aqqwvfbukn的博客 4544

「大模型学习」(11)kv cache与vllm详解,一文读懂!

Key(键):表示上下文的特征。Value(值):表示上下文的内容。Query(查询):表示当前 token 的查询向量。AttentionQKVsoftmaxQKTdkVAttentionQKVsoftmaxdk​​QKT​V),每次生成一个新 token(比如下一个词),模型会再次查看之前的所有K和V,以计算当前 token 的注意力。问题:每次都重新计算之前的 K/V 很浪费!项目维度(简化)含义Q当前 token 的查询向量。

qq_43044037的博客 5404

紫光同创PGL50H开发板实战:盘古50KH视频板的多媒体处理与高速通信方案

本文详细介绍了基于紫光同创PGL50H FPGA芯片的盘古50KH视频开发板在多媒体处理与高速通信方面的实战应用。文章从开发板硬件架构解析入手,逐步指导开发环境搭建、DDR3内存控制器配置、HDMI视频输入输出实战,并重点探讨了利用板载HSST高速收发器实现光纤通信与万兆以太网的方案。最后,通过构建一个集多路视频采集、处理与光纤传输于一体的系统案例,展示了该开发板在高性能实时数据处理领域的强大潜力。

b9c0d的博客 484

爬虫爬取51job

本文章的所有代码和相关文章, 仅用于经验技术交流分享,禁止将相关技术应用到不正当途径,滥用技术产生的风险与本人无关。 本文章是自己学习的一些记录。 开始 好久没写爬虫了 今天简单的写了个爬取多页51job的爬虫代码 思路 url=‘https://search.51job.com/list/010000,000000,0000,00,9,99,python,2,1.html?lang=c&postchannel=0000&workyear=99&cotype=99&deg

hijacklei的博客 1万+

Excel地理探测器实战:5分钟搞定空间分异性分析(附完整数据集)

本文详细介绍了如何使用Excel地理探测器插件进行空间分异性分析。通过5分钟实战教程,手把手指导数据格式准备、软件操作及四大探测器(分异及因子、交互作用、风险区、生态探测器)的结果解读,帮助规划师、研究者快速验证地理因素对现象分布的影响,大幅降低GIS分析门槛。

peace的博客 607

scrapy爬虫实战 - 51job爬虫职位爬取

思路: 首先爬取所有内容页的链接存储到数据库 然后再新建一个scrapy 爬取这些链接 需要用到的模块:scrapy urllib pymysql 内容页链接爬取 这里使用scrapy的通用爬虫框架 创建命令:scrapy genspider -t crawl [name] [domains] # -*- coding: utf-8 -*- import scrapy from scrapy.linkextractors import LinkExtractor from scrapy.spid..

花生侯塞利 1333

133、神经渲染与AI RAW:从RAW域到sRGB的端到端学习

去年在调试某款旗舰手机的主摄时,遇到一个让人头疼的问题——夜景模式下,暗部细节虽然保留得不错,但色彩总是偏紫,而且高光边缘有诡异的“水彩感”。ISP的3A统计跑了几十版,降噪强度从0调到100,甚至把去马赛克算法换成了自适应方向插值,问题依旧。后来团队里一位做AI的同事说:“要不试试端到端?从RAW直接出sRGB。”当时我第一反应是“这玩意儿能稳定吗?”结果试了一版,偏紫消失了,高光边缘的伪影也没了。从那以后,我开始认真研究神经渲染与AI RAW这条路线。

sundong_81的博客 31

大数据运营可视化:Tableau+PowerBI数据看板搭建教程

当企业数据量从“GB级”跃升到“TB级”,运营人员面临的最大挑战不再是“如何收集数据”,而是“如何让数据说话”。数据看板作为“运营指挥中心的仪表盘”,能将零散的用户行为、业务指标、流量趋势浓缩成可快速解读的视觉语言。本文结合Tableau(自由探索的“数据瑞士军刀”)与PowerBI(微软生态的“组合家具”)两大工具,从需求分析→数据准备→指标设计→视图搭建→ dashboard 组合,一步步教你搭建符合业务逻辑的运营看板。

AI智能探索者的博客 1362

51job爬取职位搜索下面的2000条职位信息

打了这么久的酱油,终于自己独立完成了网站信息的爬取,记录一下。 要求: https://search.51job.com/list/020000%252C00,000000,0000,00,9,99,%2B,2,1.html?lang=c&amp;stype=1&amp;postchannel=0000&amp;workyear=99&amp;cotype=99&amp;degreefrom=...

Strive_0902的博客 2万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

2024爬虫 用selenium 爬取 51job(前程无忧)代码

最近想要练习一下爬虫,但是打开51job的页进行操作发现,地址基本不怎么变化,不太容易提取url地址,发现无论是搜索 java 还是 python 地址是不变的,点击页码地址也不会变化。所以用操作地址的爬虫框架就不太容易操作了,下面是使用selenium爬取51job的具体流程,代码部分几乎每一行都有注释。

weixin_59178068的博客 6523

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Scrapy爬虫四步法:爬取51job网站

Scrapy爬虫四步法 一、创建项目 打开pycharm下面的Terminal窗口 scrapy startproject 项目名 如:scrapy startproject crawler51job 二、定义要爬取的数据 编写items文件(Item对象可以保存爬取到的数据,相当于存储爬取到的数据的容器。) # -*- coding: utf-8 -*- # Def...

云飞扬°的博客 4175

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: 自学数据分析师(1/7)__7天就业数据分析师__第一天matplotlib(12.30)__一蓑烟雨任平生
下一篇: Python爬虫_宅男福利?妹纸勿点__一蓑烟雨任平生
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值