初步了解爬虫 —— web请求全过程刨析
1.服务器渲染: 在服务器那边直接把数据和HTML整合在一起,统一返回给浏览器; 在页面源代码中,能够看到数据!
2.客户端渲染: 第一次请求只要HTML骨架,第二次请求拿到数据,进行数据展示; 在页面源代码中,看不到数据!
HTTP协议
协议:就是两个计算机之间为了能够流畅的进行沟通而设置的一个君子协定,常见的协议有:TCP/IP,SOAP协议,HTTP协议,SMTP协议等等
HTTP协议把一条消息分为三大块内容,无论是请求还是响应都是三块内容:
请求:
1.请求行-->请求方式(get/post) 请求url地址 协议
2.请求头-->放一些服务器要使用的附加信息
3.
4.请求体-->一般放一些请求参数
响应
1.状态栏-->协议 状态码
2.响应头-->放一些客户端要使用的一些附加信息
3.
4.响应体-->服务器返回的真正客户端要用的内容(HTML,json)等
请求头中最常见的一些重要内容(爬虫需要):
1.User-Agent:请求载体的身份标识(用啥发送的请求-模拟浏览器)
2.Referer:防盗链(这次请求是从哪个页面来的?反爬会用到)
3.cookie:本地字符串数据信息(用户登录信息,反爬的token)
响应头中的一些重要内容:
1.cookie:本地字符串数据信息(用户登录信息,反爬的token)
2.各种神奇的莫名其妙的字符串(这个需要经验,一般都是token字样,防止各种攻击和反爬)
requests入门
import requests
url = 'https://www.baidu.com/s?wd=周杰伦'
resp = requests.get(url)
# 查看响应状态
print(resp)
<Response [200]>
# 查看请求方式
print(resp.request)
<PreparedRequest [GET]>
# 拿到页面源代码
print(resp.text)
百度周杰伦
import requests
url = 'https://www.baidu.com/s?wd=周杰伦'
# 设置请求头(headers)
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.30'
}
resp = requests.get(url,headers=headers)
# 查看响应状态
print(resp.text)
# 关掉resp
resp.close()
输入明星查询
import requests
query = input("请输入一个你想要查询的明星:")
url = f'https://www.baidu.com/s?wd={query}'
# 设置请求头(headers)
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.30'
}
resp = requests.get(url,headers=headers)
# 查看响应状态
print(resp.text)
resp.close()
爬取百度翻译.输入即翻译
import requests
url = 'https://fanyi.baidu.com/sug'
s = input("请输入你要翻译的英文单词")
dat = {
'kw':s
}
# 发送post请求,发送的数据必须放在字典中,通过data参数进行传递
resp = requests.post(url,data = dat)
# 将服务器返回的内容直接处理成json()==>dict
print(resp.json())
resp.close()