百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

python爬虫原理全解析,手把手教你如何获取想要的数据

off999 2024-11-27 18:50 28 浏览 0 评论

第2章 爬虫原理和网页构造

身处于互联网时代,每当打开浏览器连接https://www.baidu.com/的时候,读者可能都不会思考网络正在做什么;面对形形色色的网页,读者也不会去思考网页是如何呈现在大家面前的。俗话说得好,“知己知彼,方能百战不殆”。本章将通过介绍网络连接来解释爬虫的原理,并使用Chrome浏览器认识网页构造并查询网页信息。

本章涉及的主要知识点如下。

·网络连接:介绍网络连接的基本过程。

·爬虫原理:介绍爬虫的基本原理和过程。

·Chrome浏览器:介绍Chrome浏览器的安装,以及使用Chrome浏览器认识网页构造和查询网页信息。

2.1 爬虫原理

现实生活中使用浏览器访问网页时,网络到底做了什么?本节将简单地介绍网络连接原理,并以此介绍爬虫原理。

2.1.1 网络连接

网络连接像是在自助饮料售货机上购买饮料一样:购买者只需选择所需饮料,投入硬币(或纸币),自助饮料售货机就会弹出相应的商品。如图2.1所示,计算机(购买者)带着请求头和消息体(硬币和所需饮料)向服务器(自助饮料售货机)发起一次Request请求(购买),相应的服务器(自助饮料售货机)会返回本计算机相应的HTML文件作为Response(相应的商品)。

注意:这里是一个GET请求。

对于学习爬虫技术,读者只需知道最基本的网络连接原理即可。计算机一次Request请求和服务器端的Response回应,即实现了网络连接。计算机Request请求带着的请求头和消息体是什么以及网络更底层的东西,不是本文所介绍的范围。

图2.1 网络连接原理

2.1.2 爬虫原理

了解网络连接的基本原理后,爬虫原理就很好理解了。网络连接需要计算机一次Request请求和服务器端的Response回应。爬虫也是需要做两件事:

(1)模拟计算机对服务器发起Request请求。

(2)接收服务器端的Response内容并解析、提取所需的信息。

但互联网网页错综复杂,一次的请求和回应不能够批量获取网页的数据,这时就需要设计爬虫的流程。本书中主要用到两种爬虫所需的流程,即多页面和跨页面爬虫流程。

1.多页面爬虫流程

多页面网页结构如图2.2所示。

图2.2 多页面网页结构

有的网页存在多页的情况,每页的网页结构都相同或类似,这种类型的网页爬虫流程为:

(1)手动翻页并观察各网页的URL构成特点,构造出所有页面的URL存入列表中。

(2)根据URL列表依次循环取出URL。

(3)定义爬虫函数。

(4)循环调用爬虫函数,存储数据。

(5)循环完毕,结束爬虫程序,如图2.3所示。

图2.3 多页面网页爬虫流程

2.跨页面爬虫流程

列表页和详细页分别如图2.4和图2.5所示。

图2.4 列表页

图2.5 详细页

这种跨页面的爬虫程序流程为:

(1)定义爬取函数爬取列表页的所有专题的URL。

(2)将专题URL存入列表中(种子URL)。

(3)定义爬取详细页数据函数。

(4)进入专题详细页面爬取详细页数据。

(5)存储数据,循环完毕,结束爬虫程序,如图2.6所示。

图2.6 跨页面网页爬虫流程

2.2 网页构造

本节将介绍如何安装和使用Chrome浏览器,并通过Chrome浏览器的使用简单介绍网页的构成。

2.2.1 Chrome浏览器的安装

Chrome浏览器的安装与普通软件安装一样,不需要进行任何配置。在搜索引擎中输入Chrome,单击下载安装即可。安装完成打开后,会出现如图2.7所示的错误。

图2.7 Chrome浏览器报错

这是因为Chrome浏览器默认的搜索引擎为Google搜索引擎,国内的网络是无法打开的。解决办法如下。

图2.8 Chrome浏览器网页设置1

(1)打开Chrome浏览器,选择“设置”选项。

(2)在“启动时”栏目中,选择“打开特定网页或一组网页”单选按钮。

(3)单击“设置网页”链接,输入常用的搜索引擎或网页,单击“确定”按钮。

(4)退出Chrome浏览器,再打开之后便是设置过后的网页。操作过程如图2.8至图2.10所示。

图2.9 Chrome浏览器网页设置2

图2.10 Chrome浏览器网页设置3

注意:这里笔者设置的为百度搜索网页。

2.2.2 网页构造

现在打开任意一个网页(http://bj.xiaozhu.com/),然后右击空白处,在弹出的快捷菜单中选择“检查”命令,可以看到网页的代码,如图2.11所示。

图2.11 网页构造

现在来分析图2.11,图中上半部分为HTML文件,下半部分为CSS样式,用<script></script>标签的就是JavaScript代码。用户浏览的网页就是浏览器渲染后的结果,浏览器就像翻译官,把HTML、CSS和JavaScript代码进行翻译后得到用户使用的网页界面。如果把网页比喻成房子的话,那么HTML为房子的框架和格局(几室几厅),CSS就是房子的样式(地板、房漆),JavaScript就是房子中的电器。

注意:本文只是简单介绍网页构造,前端语法不做解释。

2.2.3 查询网页信息

打开网页(http://bj.xiaozhu.com/),右击网页空白处,从弹出的快捷菜单中选择“查看网页源代码”命令,即可查看该网页的源代码,如图2.12所示。

图2.12 查看网页源代码

通过在指定元素上右击,然后选择快捷菜单中的“检查”命令,即可查看该元素在网页源代码中的准确位置。例如,查看网页(http://bj.xiaozhu.com/)中第一个租房的房价信息,如图2.13所示。

图2.13 租房信息

把鼠标光标移至价格元素位置,右击,从弹出的快捷菜单中选择“检查”命令,即可查看该元素在网页源代码中的具体位置,如图2.14所示。

图2.14 “检查”元素

相关推荐

Alist 玩家请进:一键部署全新分支 Openlist,看看香不香!

Openlist(其前身是鼎鼎大名的Alist)是一款功能强大的开源文件列表程序。它能像“万能钥匙”一样,解锁并聚合你散落在各处的云盘资源——无论是阿里云盘、百度网盘、GoogleDrive还是...

白嫖SSL证书还自动续签?这个开源工具让我告别手动部署

你还在手动部署SSL证书?你是不是也遇到过这些问题:每3个月续一次Let'sEncrypt证书,忘了就翻车;手动配置Nginx,重启服务,搞一次SSL得花一下午;付费证书太贵,...

Docker Compose:让多容器应用一键起飞

CDockerCompose:让多容器应用一键起飞"曾经我也是一个手动启动容器的少年,直到我的膝盖中了一箭。"——某位忘记--link参数的运维工程师引言:容器化的烦恼与...

申请免费的SSL证书,到期一键续签

大家好,我是小悟。最近帮朋友配置网站HTTPS时发现,还有人对宝塔面板的SSL证书功能还不太熟悉。其实宝塔早就内置了免费的Let'sEncrypt证书申请和一键续签功能,操作简单到连新手都能...

飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx

前面分享了两期TVGate:Q大的转发代理工具TVGate升级了,操作更便捷,增加了新的功能跨平台内网转发神器TVGate部署与使用初体验现在项目已经开源,并支持Docker部署,本文介绍如何通...

Docker Compose 编排实战:一键部署多容器应用!

当项目变得越来越复杂,一个服务已经无法满足需求时,你可能需要同时部署数据库、后端服务、前端网页、缓存组件……这时,如果还一个一个手动dockerrun,简直是灾难这就是DockerCompo...

深度测评:Vue、React 一键部署的神器 PinMe

不知道大家有没有这种崩溃瞬间:领导突然要看项目Demo,客户临时要体验新功能,自己写的小案例想发朋友圈;找运维?排期?还要走工单;自己买服务器?域名、SSL、Nginx、防火墙;本地起服务?断电、关...

超简单!一键启动多容器,解锁 Docker Compose 极速编排秘籍

想要用最简单的方式在本地复刻一套完整的微服务环境?只需一个docker-compose.yml文件,你就能一键拉起N个容器,自动组网、挂载存储、环境隔离,全程无痛!下面这份终极指南,教你如何用...

日志文件转运工具Filebeat笔记_日志转发工具

一、概述与简介Filebeat是一个日志文件转运工具,在服务器上以轻量级代理的形式安装客户端后,Filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并将来自...

K8s 日志高效查看神器,提升运维效率10倍!

通常情况下,在部署了K8S服务之后,为了更好地监控服务的运行情况,都会接入对应的日志系统来进行检测和分析,比如常见的Filebeat+ElasticSearch+Kibana这一套组合...

如何给网站添加 https_如何给网站添加证书

一、简介相信大家都知道https是更加安全的,特别是一些网站,有https的网站更能够让用户信任访问接下来以我的个人网站五岁小孩为例子,带大家一起从0到1配置网站https本次配置的...

10个Linux文件内容查看命令的实用示例

Linux文件内容查看命令30个实用示例详细介绍了10个Linux文件内容查看命令的30个实用示例,涵盖了从基本文本查看、分页浏览到二进制文件分析的各个方面。掌握这些命令帮助您:高效查看各种文本文件内...

第13章 工程化实践_第13章 工程化实践课

13.1ESLint+Prettier代码规范统一代码风格配置//.eslintrc.jsmodule.exports={root:true,env:{node...

龙建股份:工程项目中标_龙建股份有限公司招聘网

404NotFoundnginx/1.6.1【公告简述】2016年9月8日公告,公司于2016年9月6日收到苏丹共和国(简称“北苏丹”)喀土穆州基础设施与运输部公路、桥梁和排水公司出具的中标通知书...

福田汽车:获得政府补助_福田 补贴

404NotFoundnginx/1.6.1【公告简述】2016年9月1日公告,自2016年8月17日至今,公司共收到产业发展补助、支持资金等与收益相关的政府补助4笔,共计5429.08万元(不含...

取消回复欢迎 发表评论: