py00
文章概览
- 第一个爬虫
- Web请求过程
- HTTP协议
一、第一个爬虫
如何拿到一个网页呢?下面的几行代码将模拟浏览器客户端向服务器发送请求,从而拿到我们想要的网页。
from urllib.request import urlopen
url = "https://www.gushiwen.cn/"
# 获取网页
resp = urlopen(url)
print(resp.read())
上图中的\x89\xbf是没有进行合适编码的字符串,根据charset=utf-8可以判断这是用utf8编码的,那么需要添加一段代码来转码。
我们还可以将爬取下来的网页保存到文件里。
from urllib.request import urlopen
url = "https://so.gushiwen.cn/shiwenv_4600b302be1d.aspx"
# 获取网页
resp = urlopen(url)
with open("00.html", mode="w",encoding="utf-8") as f:
f.write(resp.read().decode("UTF-8"))
print("done")
二、Web请求过程
快速上手一个简单爬虫后,我们来了解一下Web请求的过程。
客户端浏览器向服务器请求资源,根据url找到对应的服务器,再根据请求返回html文件给浏览器。
其中有一个数据渲染的步骤,需要把html框架和从数据库中检索出的数据拼接在一起,这个数据渲染的过程可以是在服务器,也可以是在客户端。
-
服务器渲染:在服务器那边直接把数据和html整合在一起,统一返回给浏览器
-
客户端渲染:第一次请求只要一个html骨架,第二次请求拿到数据,进行数据展示。在页面源代码中,看不到数据。
三、HTTP协议
HTTP协议可以理解为数据传输的通俗协议,这个协议约定了数据以什么样的格式传输。
请求
- 请求行:请求方式(get/post)、请求url地址、协议
- 请求头:放一些服务器要使用的附加信息
- 请求体:一般放一些请求参数
请求头中最常见的一些重要内容(爬虫需要):
1.User-Agent:请求载体的身份标识(用什么发送的请求)
2.Referer:防盗链(这次请求是从哪个页面来的?反爬会用到)
3.cookie:本地字符串数据信息(用户登录信息,反爬的token)
响应
- 状态行:协议、状态码
- 响应头:放一些客户端要使用的一些附加信息
- 响应体:服务器返回的真正客户端要用的内容(HTML,json)等。
响应头中的一些重要的内容:
1.cookie:本地字符串数据信息(用户登录信息,反爬的token)
2.各种神奇的莫名其妙的字符串(这个需要经验了,一般都是token字样,防止各种攻击和反爬)
浙公网安备 33010602011771号