python3 [入门基础实战] 爬虫入门之智联招聘的学习(一)

2023-11-19

老实说:懵逼啊

这次爬取的是智联招聘上的求职数据,虽然没有仔细正确核对一下数据是否具有重复性,随机抽查了些,数据大部分还是能对上来的,这次爬取的智联招聘上的数据90页,每页60条,主要抓取的是android开发工程的数据,


抓取的数据为全国的数据,先上张结果图吧,

这里写图片描述

如果是想看大图,可以选中图片,长按,移动到网页最上面的边上就可以了。

ide 部分
这里写图片描述

数据用了多线程的方式,这是第一次用,因为这次用了多线程,很多时间都花在怎么把数据存储到excel文件中,后面debug下了,还是不知道怎么存,以后再过来填这个坑吧,确实有点坑,是不是。这次本来用的xpath,第一次用的是直接在浏览器右键copy xpath路径就没事了,谁知,内存地址能搞出来,但就是搞不出文本来。很无奈啊


又改回beautifulsoup 这玩意了,说实话,东西不用了,确实用的也生疏起来,这也是为什么作为一个初学者需要进行多练习吧,这样才能记住东西,

可值得学习的亮点:

url = 'http://sou.zhaopin.com/jobs/searchresult.ashx?jl=全国&kw=android&p={0}&kt=3'.format(page)
    print("第{0}页".format(page))

以后要多用这样子的形式,显出逼格来,难道不是吗?

这一块,beautifulsoup的强处吧?以后还是多用用这个方法

也贴出来

    job_name = soup.select("table.newlist > tr > td.zwmc > div > a")
    salarys = soup.select("table.newlist > tr > td.zwyx")
    locations = soup.select("table.newlist > tr > td.gzdd")
    times = soup.select("table.newlist > tr > td.gxsj > span")
    print('times  '+str(times))
    for name, salary, location, time in zip(job_name, salarys, locations, times):
        data = {
            'name': name.get_text(),
            'salary': salary.get_text(),
            'location': location.get_text(),
            'time': time.get_text(),
        }
        print(data)

最后就是多进程的地方了,python这玩意,确实,没几行代码,能搞出这么多事情

    pool = Pool(processes=6)
    pool.map_async(get_zhaopin, range(1, 91))
   # wb.save('智联招聘android' + '.xlsx')
    pool.close()
    pool.join()

最后贴出完整代码吧,运行环境pycharm2017 ,python35

# coding:utf-8

import requests
from bs4 import BeautifulSoup
from multiprocessing import Pool
from openpyxl import Workbook
import json

pageNum = 1  # 用来计数,爬取了多少条目的
wb = Workbook()
ws = wb.active
ws.title = '智联招聘'
ws.cell(row=1, column=1).value = '岗位'
ws.cell(row=1, column=2).value = '地址'
ws.cell(row=1, column=3).value = '发表天数'
ws.cell(row=1, column=4).value = '薪资'


def get_zhaopin(page):
    global pageNum
    url = 'http://sou.zhaopin.com/jobs/searchresult.ashx?jl=全国&kw=android&p={0}&kt=3'.format(page)
    print("第{0}页".format(page))
    print(url)
    header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36'
        ,
        'Cookie': 'JSSearchModel=0; LastCity%5Fid=653; LastCity=%e6%9d%ad%e5%b7%9e; LastJobTag=%e4%ba%94%e9%99%a9%e4%b8%80%e9%87%91%7c%e8%8a%82%e6%97%a5%e7%a6%8f%e5%88%a9%7c%e5%b8%a6%e8%96%aa%e5%b9%b4%e5%81%87%7c%e7%bb%a9%e6%95%88%e5%a5%96%e9%87%91%7c%e9%a4%90%e8%a1%a5%7c%e5%ae%9a%e6%9c%9f%e4%bd%93%e6%a3%80%7c%e5%91%98%e5%b7%a5%e6%97%85%e6%b8%b8%7c%e5%bc%b9%e6%80%a7%e5%b7%a5%e4%bd%9c%7c%e5%b9%b4%e5%ba%95%e5%8f%8c%e8%96%aa%7c%e4%ba%a4%e9%80%9a%e8%a1%a5%e5%8a%a9%7c%e9%80%9a%e8%ae%af%e8%a1%a5%e8%b4%b4%7c%e9%ab%98%e6%b8%a9%e8%a1%a5%e8%b4%b4%7c%e8%82%a1%e7%a5%a8%e6%9c%9f%e6%9d%83%7c%e5%85%a8%e5%8b%a4%e5%a5%96%7c%e5%8a%a0%e7%8f%ad%e8%a1%a5%e5%8a%a9%7c%e8%a1%a5%e5%85%85%e5%8c%bb%e7%96%97%e4%bf%9d%e9%99%a9%7c%e5%85%8d%e8%b4%b9%e7%8f%ad%e8%bd%a6%7c%e5%b9%b4%e7%bb%88%e5%88%86%e7%ba%a2%7c%e5%8c%85%e5%90%83%7c%e6%88%bf%e8%a1%a5%7c%e5%8c%85%e4%bd%8f%7c%e9%87%87%e6%9a%96%e8%a1%a5%e8%b4%b4; LastSearchHistory=%7b%22Id%22%3a%22189ddb74-f21f-45b7-aae7-f4b2669b25a1%22%2c%22Name%22%3a%22python+%2b+%e6%9d%ad%e5%b7%9e%22%2c%22SearchUrl%22%3a%22http%3a%2f%2fsou.zhaopin.com%2fjobs%2fsearchresult.ashx%3fjl%3d%25e6%259d%25ad%25e5%25b7%259e%26kw%3dpython%26isadv%3d0%26sg%3db19e7c6f12a348359a72d76356038a60%26p%3d4%22%2c%22SaveTime%22%3a%22%5c%2fDate(1498753078650%2b0800)%5c%2f%22%7d; SubscibeCaptcha=6A68665FC75D4E6F42128088820FE28E; urlfrom=121126445; urlfrom2=121126445; adfcid=none; adfcid2=none; adfbid=0; adfbid2=0; dywez=95841923.1498753080.1.1.dywecsr=(direct)|dyweccn=(direct)|dywecmd=(none)|dywectr=undefined; dywea=95841923.196580863499777400.1498753080.1498753080.1498753080.1; dywec=95841923; dyweb=95841923.1.10.1498753080'
    }
    wbdata = requests.get(url, headers=header).text
    soup = BeautifulSoup(wbdata, 'lxml')

    job_name = soup.select("table.newlist > tr > td.zwmc > div > a")
    salarys = soup.select("table.newlist > tr > td.zwyx")
    locations = soup.select("table.newlist > tr > td.gzdd")
    times = soup.select("table.newlist > tr > td.gxsj > span")
    print('times  '+str(times))
    for name, salary, location, time in zip(job_name, salarys, locations, times):
        data = {
            'name': name.get_text(),
            'salary': salary.get_text(),
            'location': location.get_text(),
            'time': time.get_text(),
        }
        print(data)
        # ws.cell(row=page+1, column=1).value =name.get_text()
        # ws.cell(row=page+1, column=2).value = salary.get_text()
        # ws.cell(row=page+1, column=3).value = location.get_text()
        # ws.cell(row=page+1, column=4).value = time.get_text()


if __name__ == '__main__':
    pool = Pool(processes=6)
    pool.map_async(get_zhaopin, range(1, 91))
    wb.save('智联招聘android' + '.xlsx')
    pool.close()
    pool.join()

    # for i in range(1,3):
    #     get_zhaopin(1)
    # wb.save('智联招聘android' + '.xlsx')

不足之处:
1 ,存储没有做好
2 ,数据进行解析方面做的不到位,没有很耐心的去一个一个认真的解析
3, 部分数据还未写进来。比如公司名称。
4, 对beautifulsoup库又快忘得差不多,需要对mysql,mogodb数据库存储进行学习,加快脚步。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python3 [入门基础实战] 爬虫入门之智联招聘的学习(一) 的相关文章

  • ssh 远程计算机并使用 pexpect 运行“ls-l”

    我想要ssh远程机器并运行ls l using pexpect 我是一名学习Python语言的系统工程师 没有编码知识 有人可以帮助我吗 提前致谢 My code import pexpect child pexpect spawn usr
  • 如何使用 Julia 查找矩阵中的连通分量

    假设我有以下矩阵 此处用 Julia 语言定义 mat 1 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 1 将一组值为 1 的相邻元素视为一个 分量 如何识别该矩阵有 2 个分量以及每个分量由哪些顶点组成 对于矩
  • 在python中合并两个json对象

    我正在 python 中合并两个 json 我正在做 import json json obj json dumps a 1 2 json obj1 json dumps a 3 4 json obj json obj1 print jso
  • Heroku 上的 Django 应用程序在一段时间后删除对象

    我编写了一个简单的 Django 问答论坛应用程序并将其部署在 Heroku 上 该网站的本地版本运行良好 但是 生产版本不会将问题 答案等存储超过几个小时 我决定坚持使用 Django 附带的 sqlite3 我预计该网站不会有太多流量
  • 来自 Pandas DataFrame 的用户定义的 Json 格式

    我有一个 pandas dataFrame 打印 pandas DataFrame 后 结果如下所示 country branch no of employee total salary count DOB count email x a
  • SQLAlchemy 在 MySQL 上使用什么列类型作为“文本”?

    我的总体用例是试图确定我是否可以编写一个与数据库无关的 至少支持 Postgres 和 MySQL 存储一些大数据作为原始文本 认为 500MB 作为粗略的理论上限 基于这个答案 https stackoverflow com a 2557
  • Python int和float在64位系统中的内存消耗

    我正在 Python 3 4 的 64 位系统中尝试以下代码 以了解不同原始数据类型的内存消耗 import sys print sys getsizeof 45 prints 28 print sys getsizeof 45 2 pri
  • 在 Tkinter 中调整另一个小部件内的一个小部件的大小

    我正在开发穆斯堡尔光谱 化学 的模拟软件 但在设计 UI 时 我在使用父窗口小部件调整子窗口小部件的大小时遇到 了问题 当窗口最大化时 父框架会填充额外的空间 但子窗口小部件不会更改其大小 from Tkinter import impor
  • 忽略覆盖率报告中的空文件

    覆盖率 py https github com nedbat coveragepy会包括 init py在其报告中并将其显示为 0 行 但覆盖率为 100 我想从覆盖率报告中排除所有空白文件 我不能只添加 init py to omit作为
  • 更改散景图中选项卡的样式

    我想知道是否有办法更改散景图上生成的选项卡的属性 诸如增加文本字体 更改制表符宽度等更改 以下是用于生成具有两个选项卡的绘图的简单代码 from bokeh models widgets import Panel Tabs from bok
  • 令人困惑的问题>> FileNotFoundError:[Errno 2]没有这样的文件或目录:

    这个问题让我很困惑 也许问题出在代码上 希望你看一下 with open training images labels path r as file lines file readlines 他说该文件不存在 FileNotFoundErr
  • 群组名称不能以数字开头?

    看来我不能使用像这样的正则表达式 P lt 74xxx gt 0 9 重新打包会引发错误 sre constants error bad character in group name u 74xxx 我似乎无法使用以数字开头的组名称 为什
  • Pandas 使用 NaN 进行数据透视或重塑数据框

    我有这个数据框 我需要根据以下数据进行旋转或重塑frame col df frame 0 0 1 1 2 2 3 0 4 1 5 2 pvol 0 nan 1 nan 2 nan 3 23 1 4 24 3 5 25 6 vvol 0 10
  • Python 调试器是否会介入生成器?

    我目前正在使用 NetBeans IDE 和 Jython 2 5 1 当逐步调试我的项目时 一旦遇到生成器的迭代 调试器就会直接转到代码末尾 输出工作正常 但是一旦满足第一个生成器就无法进行逐步调试 这是所有 Python IDE 中 P
  • 使用存储的密钥作为环境变量

    我有一个秘密密钥存储在 GCP 的秘密管理器中 我们的想法是使用该密钥通过云功能获取预算列表 现在 我可以从代码中访问该密钥 但我面临的问题是我需要使用该密钥设置一个环境变量 这是我添加密钥的方式 如果您的本地目录中有该文件 但是还有其他方
  • Python、Oracle DB、列中的 XML 数据,获取 cx_Oracle.Object

    我正在使用 python 从 Oracle DB 获取数据 所有行都有一个包含 XML 数据的列 当我使用 python 打印从 Oracle DB 获取的数据时 包含 XML 数据的列将打印为 0x7fffe373b960 处的 cx O
  • 在类方法 Python 中调用多处理

    最初 我有一个类来存储一些处理后的值 并通过其他方法重用这些值 问题是当我尝试将类方法划分为多个进程以加速时 python 生成了进程 但它似乎不起作用 正如我在任务管理器中看到的那样 只有 1 个进程在运行 并且结果从未传递 我做了几次搜
  • 函数调用中的星号[重复]

    这个问题在这里已经有答案了 我正在使用 itertools chain 以这种方式 展平 列表列表 uniqueCrossTabs list itertools chain uniqueCrossTabs 这与说有什么不同 uniqueCr
  • 为什么我只能在异步函数中使用await关键字?

    假设我有这样的代码 async def fetch text gt str return text async def show something something await fetch text print something 这很
  • python生成器太慢,无法使用它。我为什么要使用它?什么时候?

    最近我收到一个问题 哪一个是最快的 iterator list comprehension iter list comprehension and generator 然后编写简单的代码如下 n 1000000 iter a iter ra

随机推荐

  • 【综述阅读】Pre-trained Language Models for Text Generation: A Survey

    Pre trained Language Models for Text Generation A Survey 中国人民大学 IJCAI 2021 论文链接 https arxiv org pdf 2201 05273 pdf 综述读起来
  • 使用postman做接口测试时报的404问题

    postman接口测试的404问题 很大几率是url错了 请认真确定url是否正确 最近做接口测试时遇到了一个很cao 四声 dan 四声 的问题 就是不管参数怎么调整或者url用localhost还是ip地址 总是报404的错误 如下 这
  • n行Python代码系列:三行程序将提取HTML中的纯文本信息

    老猿Python博文目录 https blog csdn net LaoYuanPython article details 98245036 一 引言 最近看到好几篇类似 n行Python代码 的博文 看起来还挺不错 简洁 实用 传播了知
  • ukey网络连接异常_Ukey的各种操作,你知道吗?

    1 使用税务Ukey开票时应该如何赋码 1 进入到发票填开界面后 双击 货物或应税劳务名称 或者点击 系统设置 基础编码设置 自定义货物与劳务编码 2 选择商品类别的文件夹 如 一般货物 简易征收 一般商品13 代码转换 劳务 或者选择 商
  • 一文读懂如何拆分用户故事

    好的用户故事遵循Bill Wake的INVEST模型 他们是Independent Negotiable Valuable Estimable Small 和 Eestable 该小的要求促使我们分账大片的故事 但分裂后的故事仍然必须遵循I
  • 五. python面向对象(多态 和metaclass=abc.ABCMeta)

    一 多态 多肽 一种事物的多种形态 叫多肽 例如 动物 animal 猫 狗 animal py 文件 动物类 都有名字这个属性 和吃这个方法 class Animal object def init self name self name
  • CentOS7配置文件/etc/profile与/etc/profile.d的区别

    CentOS7配置文件 etc profile与 etc profile d的区别 系统配置文件的区别 etc profile 文件介绍 etc profile d目录中的脚本文件介绍 区别介绍 系统配置文件的区别 etc profile
  • PE文件结构详解(完整篇)

    一 基本概念 PE Portable Execute 文件是Windows下可执行文件的总称 常见的有DLL EXE OCX SYS等 事实上 一个文件是否是PE文件与其扩展名无关 PE文件可以是任何扩展名 那Windows是怎么区分可执行
  • Vue 中使用 Echarts5.0 的一些问题(vue-cli 下开发)

    问题 最新版的 Echarts5 0 使用 import echarts from echarts 导入 会发现导出的 echarts 是 undefined 的情况 无法正常使用 解决方案一 新版本有问题就用旧版本咯 卸载 Echarts
  • Python采集股票行情排行榜数据~帮帮友善的朋友

    嗨害大家好鸭 我是爱摸鱼的芝士 开发环境 解释器版本 python 3 8 代码编辑器 pycharm 2021 2 股票涨幅缩略界面 导入模块 import requests import json import csv python学习
  • Gparted的安装使用,

    安装的方法 在Ubuntu下 sudo apt get install gparted 或者进入ubutun系统商店搜索parted 进行安装 菜单上的位置是 系统 gt 系统管理 gt Gnome分区管理器 Gparted支持动态分区 不
  • 构建前端之光:JavaScript插件的研发艺术

    前言 在前端开发的宇宙中 星星是网页 而照亮这个宇宙的 是我们前端开发者手中的JavaScript插件 插件就像乐高积木 可以将我们的代码块组装成复杂而精美的页面 本文将引导你走进JavaScript插件的世界 探讨如何开发 测试和发布你的
  • cmd 激活anaconda的python运行环境

    cmd 激活anaconda的python运行环境 使用cmd 打开Anaconda 的python环境 输入activate 环境名 弹出activate不是内部或外部命令 解决办法 1 将Anaconda下的路径添加到系统变量 比如我的
  • 高通平台Linux kernel死机解题心得

    1 前言 1 1 目的 能够结合知识背景 借助相关调试工具 使用一般分析手段分析 定位解决项目过程中遇到的死机类系统稳定性问题 提升工作效率 持续积累 拓宽知识深度和广度 1 2 死机 指系统发生致命性异常导致主动或者被动进入系统完全不可用
  • UML类图小结

    类与类之间的关系 1 关联关系 关联 Association 关系是类与类之间最常用的一种关系 它是一种结构化关系 用于表示一类对象与另一类对象之间有联系 如汽车和轮胎 师傅和徒弟 班级和学生等等 图1 关联关系实例 1 双向关联 默认情况
  • auto_ptr 代码及缺陷

    uto ptr是C 标准库里的类 它接受一个类型形参的模板 为动态分配的对象提供异常安全 其实 它的核心思想是 用一个对象存储需要被自动释放的资源 然后依靠对象的析构函数来释放资源 这是 More Effective C 中的解释 下面给出
  • 《机器学习实战》第四章 Python3代码-(亲自修改测试可成功运行)

    由于Peter Harrington所著的这本 机器学习实战 中的官方代码是Python2版本的且有一些勘误 使用Python3的朋友运行起来会有很多问题 所以我将自己在学习过程中修改好的Python3版本代码分享给大家 以供大家交流学习
  • 统计学三大分布(卡方、t、F)即相应概率密度图的R语言实现

    三大统计分布 1 2 chi 2 2分布 设随机变量 X 1
  • Thinking in Java

    Thinking in Java Java编程思想 学习总结心得 一 前序 学习java也已经有大约两年时间 但大多数断断续续 零散没有系统学习 这次经多方推荐购买了一本java学习必读书籍 Thinking in Java 学习之余将书中
  • python3 [入门基础实战] 爬虫入门之智联招聘的学习(一)

    老实说 懵逼啊 这次爬取的是智联招聘上的求职数据 虽然没有仔细正确核对一下数据是否具有重复性 随机抽查了些 数据大部分还是能对上来的 这次爬取的智联招聘上的数据90页 每页60条 主要抓取的是android开发工程的数据 抓取的数据为全国的