UA
User-Agent(请求载体的身份标识)
UA检测
网站的服务器会检测对应请求的载体身份标识,如果检测请求的载体身份标识为某一款浏览器说明是一个正常的请求。
但是如果检测到的载体身份标识不是某一款浏览器则标识该请求不正常,则可能会被拒绝该次请求
UA伪装
让爬虫对应的请求载体身份标识伪装成某一款浏览器
伪装方法
构造一个User-Agent
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'
}
发起get请求的第三个参数使用刚刚构造的User-Agent
response = requests.get(url=url, params=param, headers=headers)
以naver为例
import requests
# UA:User-Agent(请求载体的身份标识)
# UA检测: 网站的服务器会检测对应请求的载体身份标识,如果检测请求的载体身份标识为某一款浏览器说明是一个正常的请求。
# 但是如果检测到的载体身份标识不是某一款浏览器则标识该请求不正常
# UA伪造
if __name__ == '__main__':
# UA伪装:将对应的User-Agent封装到一个字典中
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'
}
url = 'https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&'
# 处理url携带的参数:封装到字典中
kw = input('enter a word:')
param = {
'query':kw
}
# 对指定的url发起的请求对应的url是携带参数的,并且请求过程中处理了参数
response = requests.get(url=url, params=param, headers=headers)
response.encoding='utf-8' # 先转换为utf-8格式编码 避免乱码
# 获取响应数据
page_text = response.text
fileName = kw+'.html'
with open (fileName,'w',encoding='utf-8') as fp:
fp.write(page_text)
print(fileName,'保存成功!')