当前位置: 首页 > 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…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...

GitHub 趋势日报 (2025年06月08日)

📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

爬虫基础学习day2

# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found"​, "n…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...