当前位置: 首页 > news >正文

python网络爬虫—快速入门(理论+实战)(七)

系列文章目录

  (1)python网络爬虫—快速入门(理论+实战)(一)

 (2)python网络爬虫—快速入门(理论+实战)(二)

 (3) python网络爬虫—快速入门(理论+实战)(三)

 (4)python网络爬虫—快速入门(理论+实战)(四)

 (5)python网络爬虫—快速入门(理论+实战)(五)

 (6)python网络爬虫—快速入门(理论+实战)(六)


序言

      本人从事爬虫相关工作已8年以上,从一个小白到能够熟练使用爬虫,中间也走了些弯路,希望以自身的学习经历,让大家能够轻而易举的,快速的,掌握爬虫的相关知识并熟练的使用它,避免浪费更多的无用时间,甚至走很大的弯路。欢迎大家留言,一起交流讨论


本节学习目标

        掌握python网络爬虫如何解析json数据,通过爬取腾讯招聘网的数据示例掌握json数据的解析,加深对爬虫从分析到爬取再到解析这个过程的理解。


特别申明

       本网络爬虫系列教程,只是为了记录个人对网络爬虫的学习和总结,期间所使用到的爬虫示例仅仅作为学习使用,请勿传播,请勿用于商用,请勿对目标网站造成攻击或者窃取非法数据等。


4.3 动手写网络爬虫——解析json数据(以爬取腾讯招聘网数据为例)

     在前面的章节,我们学习过,爬虫基本流程的第一步就是发送请求,这就要求我们在爬取之前要弄清楚发送的这个请求的url是哪个。一般来讲,我们尽量去找响应结果是json数据格式的那个请求url,这是因为,对于json的数据解析比较简单,你只需要分析清楚返回的json数据中各个属性值的意义,然后用json库去取值就可以了。

    需要引入json库:

import json#将响应数据转为json
json_data=json.loads(data.text)
#根据json中的数据值结果去获取相应值
.......

  为了更加清晰的理解如何解析json数据,我们这里将以爬取腾讯招聘网上的工作信息,来理解json数据的解析过程。

  1.首先,打开浏览器(以谷歌浏览器为例)进入腾讯招聘网站(https://careers.tencent.com/)

   2.输入“数据分析”查找工作岗位:

  3. 按键盘上的F12按键,查看网页源码:

4.点击右侧源码顶部的Network,然后点击下面的Fetch/XHR: 

5. 点击键盘上的F5刷新页面,可以在右侧看到页面的数据请求链接信息:

 

6.依次点击各个请求链接进行分析,查找哪个请求链接获取的数据是我们所需要的,我们可以看到请求的结果是一个json格式的: 

7.找到想要的请求链接后,点击Headers,复制请求链接:

8.把请求链接复制到浏览器上打开,可以看到是json格式的,分析链接中的参数:

9.一般可以通过参数名称推断出各个参数的含义,或者通过修改相应的参数值,删除个别参数等方式查看数据的变化,结合原网页上的数据,通过对比来推测参数的含义,如:我们推测pageSize应该为获取的数据量大小,我们尝试将它的值修改为5,然后对比下数据变化和原网页上的数据。

10.pageSize修改为5后,可观察到,获取了前5条数据,因此可确定pageSize为每次获取的数据条数。

11.通过上述方法依次确定pageIndex是当前的页码数,keyword是是查询的关键词,pageSize是每次获取的数据量大小,pageIndex是页码。

12.参数确定后,我们只要修改相应的参数就能够爬取到所有的招聘数据了。

接下来就可以编写爬取程序,对数据进行获取和解析了。

#根据返回的json中的数据结构,提取想要的数据jobs = json_data['Data']['Posts'] #经过分析,所有的数据都在Data下的Posts数组中for job in jobs:try:name = job["RecruitPostName"] #岗位名称Location = job["LocationName"]#工作地点work = job["Responsibility"].replace("\r\n","").replace("\n","") # 去除换行符 #工作内容update = job["LastUpdateTime"] #更新时间postUrl = job["PostURL"] #详情页网址#输出解析到的电影信息print(name,Location,work,update,postUrl)except:print(job)#万一解析出错,则输出电影信息,以便于检查是否是程序问题

如果要实现多页爬取,或者更换招聘的关键词,那么就可以通过循环,不断变换请求url中的pageIndex的值以及keyword值。

   完整的程序代码,可以在评论区留言或私信:

  https://download.csdn.net/download/c1007857613/87370864


总结

    本节主要介绍了python网络爬虫如何解析json数据,通过爬取腾讯招聘网的数据示例掌握json数据的解析,加深对爬虫从分析到爬取再到解析这个过程的理解

    如对本章节有疑问,或者需要相应的学习资料的,欢迎评论留言!!!


【前一篇】:python网络爬虫—快速入门(理论+实战)(六)

相关文章:

python网络爬虫—快速入门(理论+实战)(七)

系列文章目录 (1)python网络爬虫—快速入门(理论实战)(一) (2)python网络爬虫—快速入门(理论实战)(二) (3) p…...

机器学习笔记——Chapter 1 – The Machine Learning landscape

ML学习笔记 Chapter 1 – The Machine Learning landscape 1.如何定义机器学习? Answer:机器学习是一门通过编程让计算机从数据中进行学习的科学(和艺术)。 2.机器学习在哪些问题上表现突出,你能给出四种类型吗&am…...

skimage.feature--corner_harris、hog、local_binary_pattern说明

skimage.feature说明–corner_harris、hog、local_binary_pattern 文章目录skimage.feature说明--corner_harris、hog、local_binary_pattern1. 前言2. corner_harris2.1 介绍2.2 参数及返回3. hog3.1 介绍3.2 参数及返回4. local_binary_pattern4.1 介绍4.2 参数及返回5. 总结…...

致敬白衣天使,学习Python读取

名字:阿玥的小东东 学习:Python、c 主页:阿玥的小东东 故事设定:现在学校要求对所有同学进行核酸采集,每位同学先在宿舍内等候防护人员(以下简称“大白”)叫号,叫到自己时去停车场排…...

JVM - 认识JVM规范

目录 重识JVM JVM规范作用及其核心 JVM 整体组成 理解ClassFile结构 ASM开发 重识JVM JVM概述JVM: Java Virtual Machine,也就是Java虚拟机所谓虚拟机是指: 通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的计算机系统…...

文献阅读笔记 # CodeBERT: A Pre-Trained Model for Programming and Natural Languages

《CodeBERT: A Pre-Trained Model for Programming and Natural Languages》EMNLP 2020 (CCF-B)作者主要是来自哈工大、中山大学的 MSRA 实习生和 MSRA、哈工大的研究员。资源:code | pdf相关资源:RoBERTa-base | CodeNN词汇: bimodal: 双模态…...

openHarmony的UI开发

自适应布局 拉伸能力 ​ Blank在容器主轴方向上,空白填充组件具有自动填充容器空余部分的能力。仅当父组件为Row/Column时生效,即是线性布局。这样便可以在两个固定宽度或高度的组件中间添加一个Blank(),将剩余空间占满,从而实现…...

【JavaSE】深入HashMap

文章目录1. HashMap概述2. 哈希冲突3. 树化与退化3.1 树化的意义3.2 树的退化4. 二次哈希5. put方法源码分析6. key的设计7. 并发问题参考 如何防止因哈希碰撞引起的DoS攻击_hashmap dos攻击_双子孤狼的博客-CSDN博客 为什么 HashMap 要用 h^(h >>&#…...

华为机试题:HJ62 查找输入整数二进制中1的个数(python)

文章目录博主精品专栏导航知识点详解1、input():获取控制台(任意形式)的输入。输出均为字符串类型。1.1、input() 与 list(input()) 的区别、及其相互转换方法2、print() :打印输出。1、整型int() :将指定进制&#xf…...

代码随想录训练营一刷总结|

分为几个大部分: 数组 最先接触的部分,虽然说感觉是最简单的,但是需要掌握好基础,特别是小心循环。这里面需要再仔细看的就是螺旋矩阵那一块,其他的在后续刷的时候能用一种方法一次a就行。 链表 需要注意链表的基础…...

CSS中的几种尺寸单位

一、尺寸单位 CSS 支持多种尺寸单位,包括: px:像素,固定大小单位em:相对于当前元素字体大小的单位rem:相对于根元素(HTML)字体大小的单位%:相对于父元素的百分比单位vh…...

运维必会:ansible剧本(piaybook)

playbooks 概述以及实例操作 Playbooks 组成部分: Inventory Modules Ad Hoc Commands Playbooks Tasks: 任务,即调用模块完成的某些操作 Variables: 变量 Templates: 模板 Handlers: 处理器,由某时间触发执行的操作 Roles: 角色 YAML 介绍…...

活动星投票午间修身自习室制作在线投票投票制作网页

“午间修身自习室”网络评选投票_免费小程序投票推广_小程序投票平台好处手机互联网给所有人都带来不同程度的便利,而微信已经成为国民的系统级别的应用。现在很多人都会在微信群或朋友圈里转发投票,对于运营及推广来说找一个合适的投票小程序能够提高工…...

C#泛型:高级静态语言的效率利器

文章目录引入类型约束子类泛型常用的泛型数据结构前文提要: 💎超快速成,零基础掌握C#开发中最重要的概念💎抽丝剥茧,C#面向对象快速上手💎Winform,最友好的桌面GUI框架💎懂了委托&a…...

澳大利亚访问学者申请流程总结

澳大利亚访问学者申请需要注意些什么?下面知识人网小编整理澳大利亚访问学者申请流程总结。1、取得wsk英语成绩,现在都是先买票再上车了。2、联系外导,申请意向接收函(email)。3、向留学基金委CSC提出申请。4、获批后,申请正式邀请…...

cookie和Session的作用和比较

目录 什么是cookie cookie的工作原理 什么是session Session的工作原理 为什么会有session和cookie cookie和session如何配合工作 cookie和Session作用 什么是会话 什么是cookie cookie是web服务器端向我们客户端发送的一块小文件,该文件是干嘛的呢&#xf…...

测试员都是背锅侠?测试人员避“锅”攻略,拿走不谢

最近发生了一起生产事故,究其根源,事故本身属于架构或者需求层面需要规避的问题,测试人员的责任其实是非常小的,但实际情况是:相关测试人员因此承担了很大的压力,成为质量问题的“背锅侠”。 实际上&#…...

C++: C++模板<template>

C template content😊前言😁模板💕1、泛型编程😍2、函数模板😒2.1:函数模板概念👌2.2:函数模板的格式😘2.3:函数模板原理😁2.4:函数模…...

chmod命令详解

用法:chmod [选项]… 模式[,模式]… 文件…  或:chmod [选项]… 八进制模式 文件…  或:chmod [选项]… --reference参考文件 文件… Change the mode of each FILE to MODE. With --reference, change the mode of each FILE to that of R…...

状态机设计中的关键技术

⭐本专栏针对FPGA进行入门学习,从数电中常见的逻辑代数讲起,结合Verilog HDL语言学习与仿真,主要对组合逻辑电路与时序逻辑电路进行分析与设计,对状态机FSM进行剖析与建模。 🔥文章和代码已归档至【Github仓库&#xf…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

docker详细操作--未完待续

docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...