爬虫
通过编写程序来获取互联网资源
需求:用程序模拟浏览器,输入一个网址,从该网址中获取到资源或者内容
python搞定以上需求
-
导包 from urllib.request import urlopen
2.写url
-
urlopen这个网址
-
返回得到内容
web请求过程剖析
两种渲染方式:
-
服务器渲染: 在服务器那边直接把数据和html整合一起,统一返回给浏览器(即服务器收到的一定是带有内容的html)(数据能在源代码中找到的就是服务器渲染)
-
客户端渲染: 所用的浏览器即为客户端,第一次请求只要了一个html骨架,第二次请求拿到数据,然后进行数据展示。在页面源代码中看不到数据
客户端向服务器发送网页请求,服务器会返回一个html骨架,就是只给了一个网页,里面没有内容,这时候客户端再次请求要数据,服务器返回数据,然后客户端接收数据后将该数据与骨架拼接。
HTTP协议
超文本传输协议,直白点,传输的就是网页页面源代码,浏览器和服务器之间的数据交互遵守的就是HTTP协议
HTTP在发送和得到数据分为请求和响应两大块
请求:1.请求行 (请求方式(get/post)、请求URL地址、协议)
- 请求头 (放一些服务器要使用的附加信息)
- 请求体(放请求参数)
响应: 1.状态行(协议、状态码(200 302 500 404等))
2.响应头 (放一些客户端要使用的附加信息)
3.响应体(服务器返回的真正客户端要用的内容(html、json)等)
写爬虫格外注意请求头和响应头,这两个部分一般隐含较为重要的内容
请求头中常见重要内容:
- User-Agent :请求载体的身份标识(浏览器,用什么浏览器发送的请求)
- Refer:防盗链(这次请求是从哪个页面来的,反爬会用到)
- cookie:本地字符串数据信息(用户登录信息,反爬的token)
响应头中常见重要内容:
- cookie:本地字符串数据信息(用户登录信息,反爬的token)
- 各种神奇的莫名其妙的字符串(一般都是token字样,放置各种攻击和反爬)
请求方式:
GET 显示提交: 查询东西用get居多 在浏览器地址栏里头的都是get方式提交的
POST 隐示提交:对服务器内容增加修改,上传一些内容用post居多
# 入门超小爬虫
from urllib.request import urlopen
url = "http://www.baidu.com"
response = urlopen(url)
with open("mybaidu.html", mode="w", encoding="utf-8") as f:
f.write(response.read().decode("utf-8")) # decode解码 读取到网页的页面源代码
print("over")
标签:01,浏览器,请求,爬虫,html,服务器,数据,客户端
From: https://www.cnblogs.com/aowei/p/16662233.html