进阶之爬虫!
之前入门阶段发过几篇练题篇,有人私信询问入口链接,在这里点击蓝色字即可进入
点击这里开始练题
一、爬虫基础(上)
1.前言
在开始学习之前,准备了三个思考题:
1> 爬虫原理是什么
2.>从哪里爬取网页内容
3> 爬到的内容长什么样
2.爬虫
网络爬虫英文是 Web Crawler,网络爬虫是按照一定规则自动抓取网页信息的程序。
如果把互联网比作一张大网,把蜘蛛网的节点比作一个个网页。
那么爬虫就是在网页上爬行的蜘蛛,每爬到一个节点就能够访问该网页的信息,所以又称为网络蜘蛛(Web Spider)。爬虫获取的就是浏览器解析之前的源代码
3. 爬虫能做什么呢?
网络爬虫能够自动化获取某网页的所有信息,通过提取网页中的评论内容,将信息保存到文档中,便于对数据进行查看和分析。所以,网络爬虫就是自动化从网页上获取信息、提取信息和保存信息的过程。
4.URL
日常我们访问每个网站都是通过链接打开的,也叫做URL
URL全称为Uniform Resource Locator,即统一资源定位符,指定了我们要查找资源的地址。
1> URL组成结构
访问协议 + : + // + 主机名 + / + 文件路径名(可省略)
主机名就是我们要访问的计算机的名字,“//”为分隔符,表示后面的字符串是主机名,主机名后面的“/”表明,要在后面写上文件地址,而这里的文件名称是可省略的,省略了默认是首页,不省略的会根据文件路径名链接到对应页面。
我们访问的网页资源是存储在服务器中的。服务器可用于管理资源并为用户提供服务,其特点就是运算速度快,能为大量用户服务。服务器的种类有很多,当浏览网页时其主要作用就是将网页信息提供给浏览器,此时的服务器也被称为Web服务器。
Http:HyperText Transfer Protocol,简称http,超文本传输协议。HTTP协议是互联网数据传输的一种规则,它规定了数据的传输方式。HTTP协议定义了客户端和服务器之间传递消息的内容和步骤。当URL的协议部分写的是http时,表明服务器传输数据使用的是HTTP协议。
2> 多数网页URL用的是https,那么http和https有什么区别呢?
HTTPS:HyperText Transfer Protocol Secure,超文本传输安全协议。
HTTP协议在进行数据传输时,内容是未加密的,传输内容可能被窃听或篡改,安全性比较差。
HTTPS并非是全新的协议,只是在传输之前加了一层保护,让内容安全不易被窃听。
所以说,HTTPS协议是HTTP的安全版,使用HTTPS传输能够让传输的数据更安全。
5. 请求和响应
HTTP协议规定了浏览器和服务器之间传递消息的内容和步骤。我们要从网页中获取源代码,那么就要先了解消息传递的方式。
HTTP协议:
1>【浏览器】会先发送HTTP请求,告诉Web服务器需要的数据。
2>【Web服务器】收到请求后,按照请求执行,并返回HTTP响应消息。
3>【浏览器】收到返回的数据后,会将源代码解析成网页展示出来。
HTTP发送的请求(Request)消息主要包含两部分“对什么”和“怎么做”。
① “对什么”是我们前面学习的URL,就是要访问的目标。
② “怎么做”一般叫做方法,是指让Web服务器完成什么工作。
·由于浏览器发送请求时,将“对什么”和“做什么”信息放在头部。所以,存放这些信息的地方又叫请求头(Request Headers)。
·在HTTP协议中,Web服务器收到请求消息后,会根据请求进行处理。并将响应(Response)消息返回给浏览器。响应消息的头部叫做响应头(Response Headers),响应头中的数据用于告诉浏览器此次请求执行失败还是成功。
响应头中用于告知浏览器执行结果成功或失败的叫做状态码。
状态码是由3位的数字构成的,主要用于告知客户端的HTTP请求的执行结果。
状态码可以让我们了解到服务器是正常执行结果,还是出现了错误。状态码数量很多,不需要去特别记忆
状态码 | 含义 |
1XX | 告知请求的处理进度和情况 |
2XX | 成功 |
3XX | 表示需要进一步操作 |
4XX | 客户端错误 |
5XX | 服务器错误 |
例如:
1> 当浏览器发送HTTP请求后,Web服务器执行了请求后。返回的响应头(Response Headers)中状态码为200,表示执行成功,浏览器此次的请求正常执行。
2> 日常访问网页时,也会遇见状态码:404。
404(Not Found)表示服务器无法找到请求的资源,或者,有的服务器拒绝你的请求并不想说明理由时也会提示404。
3> 或者,有时候打开网页时会提示状态码503。
状态码503(Service Unavailable)表示服务器处于超负荷状态或正在进行停机维护,现在无法处理浏览器的请求。
二、爬虫基础(下)
1.requests模块
要使用Python来爬取网页内容,需要安装requests模块,该模块可以用于获取网络数据。
由于requests模块是Python的第三方模块,需要额外安装,安装requests模块非常简单,在电脑终端输入代码:pip install requests
然后使用import导入requests模块
import requests
要获取网页中的内容,就需要网页的URL,在网页中复制链接后,将其赋值给url,以求一百以内素数那篇文章为例
import requests
url = "http://t.csdn.cn/3ccph"
2. 请求网页内容
requests.get()函数可用于模拟浏览器请求网页的过程,在Python语言中使用该函数,就能够获取网页数据。get()函数中传入要访问网页的URL,就像浏览器打开URL一样。
requests.get()是获取网页信息的主要函数,使用该函数获取案例网页的URL,会返回一个Response对象,也就是前面说到的响应消息。
使用print输出响应消息会得到Response [200]表示响应消息中状态码为200,说明此次浏览器的请求执行成功。
import requests
url = "http://t.csdn.cn/3ccph"
response = requests.get(url)
print(response)
<Response [200]>
查看浏览器中的请求方法:
打开浏览器-->右键选择检查-->找Network-->将链接复制打开网页-->找文件名为example-post-3/的文件-->点击该文件查看Headers-->找到Request Headers-->查看方法method:GET
3.获取状态码
在浏览器中查看General中的信息就能够找到Status Code:200,状态码200代表此次请求执行成功。
使用.status_code属性就可以查看状态码,这里输出的状态码数据类型是整型
import requests
url = "http://t.csdn.cn/3ccph"
response = requests.get(url)
statusCode = response.status_code
print(statusCode)
200
而只有状态码返回为200时,才能够成功获取到网页内容。
为满足上面的运行逻辑,我们要使用条件判断语句if..else先判断状态码,当状态码等于200时,再进行下一步操作。
import requests
url = "http://t.csdn.cn/3ccph"
response = requests.get(url)
if response.status_code == 200:
print(response.status_code)
else:
print("请求数据失败")
200
4. 获取网页内容
通过请求URL,已经获取到了Web服务器返回的信息,那这些信息怎样才能呈现出来呢?
这里就要用到.text属性,该属性能够将获取到的网页信息提取出来。由于网页内容较多,我们这里可以用切片的方法,先输出前1000个字符。
import requests
url = "http://t.csdn.cn/3ccph"
response = requests.get(url)
if response.status_code == 200:
content = response.text[:1000]
print(content)
else:
print("请求数据失败")
5. HTML
仔细观察刚刚输出的内容,不像我们日常接触的Python语言。这是HTML语言,全称为HyperText Markup Language,超文本标记语言,它用来定义网页内容和结构。HTML是由一系列的标签组成,这些标签组合起来就是我们浏览器看到的网页。
标签:是用来标记内容块的,主要有两种形式成对出现和单独出现。
1> 成对出现的标签
<开始标签>内容<结束标签>
结束标签只比开始标签多一个斜杠"/"。
① <html></html>表明这是一个网页文档。
② <head></head>标签用于定义文档的头部信息,这些信息不会展示在网页中。
③ <body></body>标签用于定义文档的主体,包含网页的图片、文字、链接、视频等多种展现形式。
2> 单独标签
①<html></html>表明这是一个网页文档。
②<head></head>标签用于定义文档的头部信息,这些信息不会展示在网页中。
③<body></body>标签用于定义文档的主体,包含网页的图片、文字、链接、视频等多种展现形式。
标签是可以嵌套的,例如<head>元素中嵌套了<title></title>成对标签。
在<body>元素中嵌套了多个成对标签和单独标签。
属性:用于丰富表现形式,一般放在开始标签里,并且以属性名="属性值"的形式展现。
属性还可以描述内容的颜色、边框等等。
6.小结
①HTML是构成网页的标记语言。
②URL指定了要访问文档的具体地址。
③HTTP协议规定了文档的传递方式。
④爬虫就是根据URL,通过HTTP协议去获取HTML内容。
进阶内容有困难的同学,建议先巩固入门基础,可以点击这里进行练习
最后
以上就是体贴小土豆最近收集整理的关于跟我一起学Python网络爬虫【第一篇】一、爬虫基础(上)二、爬虫基础(下)的全部内容,更多相关跟我一起学Python网络爬虫【第一篇】一、爬虫基础(上)二、爬虫基础(下)内容请搜索靠谱客的其他文章。
发表评论 取消回复