进行搜狗结果网页的爬取代码如下
import requests
if __name__ == '__main__':
x = input("请输入查询")
url = 'https://www.baidu.com/s'
param = {
'wd': x
}
responce = requests.get(url=url,params=param)
page_text = responce.text
with open('./1.1.html','w',encoding='utf-8') as f:
f.write(page_text)
print(page_text)
为什么会出现这样的情况呢?
我在存储的时候已经进行了编码格式的说明‘utf-8’
那为什么还会出现这样的情况呢
这是因为网站的UA检测,即检测你发送请求的User-Agent数据
UA检测反爬策略
有些网页为了防止爬虫会在服务器端进行UA检测,即检测访问网页的数据是否为一个浏览器,也就是说他会检测这个请求是通过浏览器进行发送的,而不是其他什么方式发送请求的。
而在Python爬虫操作中也有相同的反反爬操作,那就是进行UA伪装,通过Python脚本设置UA,在发送请求时同时发送UA数据,来进行UA伪装
每一台设备进行网页浏览时都会发送User-Agent数据
答:在header中设置User-Agent
首先打开一个网页
F12进入开发者工具窗口
点击network网络
在下面栏中进行点击
在右侧向下翻动查看自己的User-Agent
首先设置一个header数据字典
header{
'User-Agent':'这里填你的User-Agent数据'
}
在requests.get请求第三个参数中传入自己的header字典
responce = requests.get(url=url,params=param,headers=headers)
import requests
if __name__ == '__main__':
x = input("请输入查询")
url = 'https://www.sogou.com/web'
param = {
'query': x
}
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36 Edg/86.0.622.56'
}
responce = requests.get(url=url,params=param,headers=headers)
page_text = responce.text
with open('./1.1.html','w',encoding='utf-8') as f:
f.write(page_text)
print(page_text)