跟我一起学Python网络爬虫【第一篇】

进阶之爬虫!

之前入门阶段发过几篇练题篇,有人私信询问入口链接,在这里点击蓝色字即可进入

点击这里开始练题

 

一、爬虫基础(上)

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内容。

进阶内容有困难的同学,建议先巩固入门基础,可以点击这里进行练习

  • 14
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Outlier_9

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

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

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

打赏作者

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

抵扣说明:

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

余额充值