用python写网络爬虫第一章

网络爬虫概念

HTTP基本原理(介绍URI和URL,HTTP和HTTPS协议,请求与响应。)

网页基础(介绍网页组成,网页结构以及节点数。)

网络爬虫概念
网络爬虫的英文为Web Spider ,又叫作网络蜘蛛。网络爬虫其实就是一种按照一定规则,自动地抓取互联网中信息地程序或脚本。
在这里插入图片描述HTTP基本原理
(1)URL全称为Uniform Resource Locator 被称为统一资源定位符,可以理解为网址。例如,摄像网中故宫博物馆的图片地址为:http://seopic.699pic.com/photo/50088/2824.jpg_wh1200.jpg。它包含以下几种信息:

  • 访问协议:http,用于确定数据传输的方式
  • 服务器名称:seopic.699pic.com,图片所在的网站地址
  • 访问路径:photo/50088,图片目录
  • 资源名:2824.jpg_wh1200.jpg,图片名称
    (2)超文本
    英文名为hypertext.网页的源代码HTML就叫作超文本。网页源代码是一系列HTML代码,里面包含了一系列标签,比如img显示图片,p指定段落。如何查看网页的HTML的源代码呢?我们以百度为例,使用Chrome浏览器打开百度。
    方式一:
    在页面显示区域点击右键,在弹出的菜单中选择“查看网页源代码”。
    方式二:
    使用Chrome的“开发者工具”。按下F12键,显示“开发者工具”,再按下F5键,刷新页面,按照下图所示的顺序,在“Response”栏中查看百度的HTML代码。
    在这里插入图片描述

(3)HTTP
HTTP协议全称HyperText Transfer Protocol,即超文本传输协议。是用于从网络中传输超文本到本地浏览器的传输协议。
HTTP协议以明文方式发送内容,不提供任何方式的数据加密。

(4)HTTPS协议
全称HyperText Transfer Protocol over Secure Socket Layer,即安全套接字层超文本传输协议。是以安全为目标的HTTP通道,简单讲是HTTP的安全版。HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并对浏览器和服务器之间的通信加密。

(4)HTTP请求
来看一下我们是如何通过浏览器访问网页的。首先在浏览器中的URL栏中输入网址,如百度:https://www.baidu.com/,然后回车,浏览器中就会显示百度首页面。从技术角度讲,浏览器和百度服务器是如何交互的呢?下图简单说明了他们之间的交互过程。
在这里插入图片描述

  • 浏览器向网站所在的服务器发送了一个请求。
  • 网站服务器接收到这个请求后进行处理和解析。
  • 网站服务器返回对应的响应,接着传回给浏览器。
  • 响应里包含了页面的源代码等内容,浏览器再对其进行解析,便将网页呈现了出来。

(5)HTTP请求示例为了更直观地说明这个过程,可以用Chrome浏览器的开发者工具下的Network来监听,它可以显示访问当前请求网页时发生的所有网络请求和响应。以访问百度(https://www.baidu.com)为例。
(1) 打Chrome浏览器,按F12键,显示“开发者工具”栏。
(2) 地址栏中输入百度网址:https://www.baidu.com,回车。
(3) “开发者工具”栏抓取到了许多浏览器请求以及服务器响应信息。按下图所示顺序选中各个选项,在第4步的Headers选项卡中,就能查看到请求信息了。
在这里插入图片描述首先是General部分,Request URL为请求的URL,Request Method为请求的方法,Status Code为响应状态码,Remote Address为远程服务器的地址和端口,Referrer Policy为Referrer判别策略。再继续往下看,可以看到,有Response Headers和Request Headers,这分别代表响应头和请求头。

(6)HTTP请求包含的内容

  • 请求方法:GET和POST。如果是GET请求,请求的参数会直接包含到URL里。例如,在百度中搜索Python,这就是一个GET请求,链接为https://www.baidu.com/s?wd=Python,其中URL中包含了请求的参数信息。POST请求大多在表单提交时发起。比如,对于一个登录表单,输入用户名和密码后,点击“登录”按钮,这通常会发起一个POST请求,其数据通常以表单的形式传输,而不会体现在URL中。
  • 请求网址:请求的网址,即统一资源定位符URL,它可以唯一确定我们想请求的资源
  • 请求头:请求头,用来说明服务器要使用的附加信息,比较重要的信息有Cookie、Referer、User-Agent等。下面简要说明一些常用的头信息。
  • 请求体:请求体一般承载的内容是POST请求中的表单数据,而对于GET请求,请求体则为空。

(6)HTTP响应包含的内容

  • 响应状态码:响应状态码表示服务器的响应状态,如200代表服务器正常响应,404代表页面未找到,500代表服务器内部发生错误。
  • 响应头:响应头包含了服务器对请求的应答信息,如Content-Type、Server、Set-Cookie等。
  • 响应体:最重要的当属响应体的内容了。响应的正文数据都在响应体中,比如请求网页时,它的响应体就是网页的HTML代码;请求一张图片时,它的响应体就是图片的二进制数据。我们做爬虫请求网页后,要解析的内容就是响应体,如下图所示。
    在这里插入图片描述在做爬虫时,我们主要通过响应体得到网页的源代码、JSON数据等,然后从中做相应内容的提取。

网页的组成

  • HTML
  • CSS
  • JavaScript
  • 如果把网页比作一个人的话,HTML相当于骨架,JavaScript相当于肌肉,CSS相当于皮肤,三者结合起来才能形成一个完善的网页。

HTML HTML是用来描述网页的一种语言,全称叫做Hyper Text Markup Language,即超文本标记性语言。网页包括文字、按钮、图片和视频等各种复杂的元素,其基础架构就是HTML。不同类型的内容通过不同类型的标签来表示,如图片用img标签表示,视频用video标签表示,段落用p标签表示,它们之间的布局又常通过布局标签div嵌套组合而成,各种标签通过不同的排列和嵌套才形成了网页的框架。
在Chrome浏览器中打开百度,按F12键,打开开发者工具,按照下图所示的顺序执行,在Response选项中就可以查看百度HTML代码了。
在这里插入图片描述
这就是HTML,整个网页就是由各种标签嵌套组合而成的。这些标签定义的节点元素相互嵌套和组合形成了复杂的层次关系,就形成了网页的架构。

CSS全称叫做Cascading Style Sheets,即层叠样式表。“层叠”是指当在HTML中引用了数个样式文件,并且样式发生冲突时,浏览器能依据层叠顺序处理。“样式”指网页中文字大小、颜色、元素间距、排列等格式。

CSS是目前唯一的网页页面排版样式标准,有了它的帮助,页面才会变得更为美观。

在Chrome浏览器中打开百度,按F12键,打开开发者工具,按照下图所示的顺序执行,在Preview选项中就可以查看百度需要用到的CSS代码了。
在这里插入图片描述JavaScriptJavaScript,简称JS,是一种脚本语言。HTML和CSS配合使用,提供给用户的只是一种静态信息,缺乏交互性。我们在网页里可能会看到一些交互和动画效果,如下载进度条、提示框、轮播图等,这通常就是JavaScript的功劳。它的出现使得用户与信息之间不只是一种浏览与显示的关系,而是实现了一种实时、动态、交互的页面功能。
在Chrome浏览器中打开百度,按F12键,打开开发者工具,按照下图所示的顺序执行,在Preview选项中就可以查看百度需要用到的JavaScript代码了。
在这里插入图片描述网页的结构先看一个简单的电影排行的HTML的例子。代码可以在记事本中编写,保存后将后缀改为html(movies.html))。也可以在PyCharm中新建一个HTML文档。推荐后一种方式,层次分明、可读性强。下面是实现的HTML代码:

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>电影排行</title>
	</head>
	<body>
		<div id ="content">
			<h1>电影排行榜单</h1>
			<div class="m_list">
				<p>1.肖申克的救赎</p>
				<p>2.霸王别姬</p>
			</div>
		</div>
	</body>
</html> 

使用浏览器打开movies.html,网页效果如图所示。
在这里插入图片描述下面来分析一下这个HTML代码。
Ø 第一行用DOCTYPE定义了文档类型。
Ø 使用尖括号定义标签,如<html>、<div>、<p>、<body>
Ø 标签一般是成对出现的,如是起始标签,是终止标签。
Ø 最外层的是html标签,表示HTML代码的范围。内部包含head和body标签,分别表示网页头和网页体。
Ø head标签内定义了网页的属性和引用。如“”指明了网页的编码方式为UTF-8;“电影排行”定义了网页的标题。
Ø body标签内是浏览器显示的正文内容,也是爬虫获取数据的来源。
Ø div标签类似于一个容器,它将内部所有的内容看成一个整体,主要用于页面的布局。
Ø 标签h1代表一级标题;p代表段落,会自动换行。
Ø 标签内可以定义自己的属性。如“<div id="content">”它的属性id值为content。这是一个非常有用的属性,因为整个网页中,id的值是唯一的,可以通过它快速定位到这个标签。“<div>”中,属性class的值为m_list,这也是一个非常有用的属性,通过它可以定位到所有相同样式的标签。

节点数及结点之间的关系即使你了解了HTML代码,对爬虫来说也是无法从中爬取数据的,因为我们还是不知道HTML究竟是什么结构,只有了解了其结构特点,才可以在HTML中编写程序抽取出数据。在HTML中,所有标签定义的内容都是节点,它们构成了一个HTML DOM树。我们先看下什么是DOM,DOM是W3C(万维网联盟)的标准,其英文全称Document Object Model,即文档对象模型。它定义了访问HTML和XML文档的标准:
“W3C文档对象模型(DOM)是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。”
W3C DOM标准被分为3个不同的部分。
Ø 核心DOM: 针对任何结构化文档的标准模型。
Ø XML DOM:针对XML文档的标准模型。
Ø HTML DOM:针对HTML文档的标准模型。
在这里插入图片描述通过HTML DOM,树中的所有节点均可通过JavaScript访问,所有HTML节点元素均可被修改,也可以被创建或删除。
节点树中的节点彼此拥有层级关系。我们常用父(parent)、子(child)和兄弟(sibling)等术语描述这些关系。父节点拥有子节点,同级的子节点被称为兄弟节点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃香菜的斌斌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值