Python爬虫初学——Python爬取的搜狗网页数据出现乱码,(User-Agent)UA伪装操作过程

1.错误再现——网页数据出现乱码

进行搜狗结果网页的爬取代码如下

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)


爬取结果1.html
Python爬虫初学——Python爬取的搜狗网页数据出现乱码,(User-Agent)UA伪装操作过程_第1张图片

2.问题分析——网页存在UA检测

为什么会出现这样的情况呢?

我在存储的时候已经进行了编码格式的说明‘utf-8’
在这里插入图片描述
那为什么还会出现这样的情况呢

这是因为网站的UA检测,即检测你发送请求的User-Agent数据

3.什么是User-Agent(UA)检测

UA检测反爬策略

有些网页为了防止爬虫会在服务器端进行UA检测,即检测访问网页的数据是否为一个浏览器,也就是说他会检测这个请求是通过浏览器进行发送的,而不是其他什么方式发送请求的。

而在Python爬虫操作中也有相同的反反爬操作,那就是进行UA伪装,通过Python脚本设置UA,在发送请求时同时发送UA数据,来进行UA伪装

每一台设备进行网页浏览时都会发送User-Agent数据

4.UA伪装实现过程

1.如何进行伪装?

答:在header中设置User-Agent

2.我自己的User-Agent在哪里找

首先打开一个网页
F12进入开发者工具窗口
点击network网络
在下面栏中进行点击
在右侧向下翻动查看自己的User-Agent

3.在爬虫程序中怎么设置成自己的User-Agent

首先设置一个header数据字典

header{
     
	'User-Agent':'这里填你的User-Agent数据'
}

在requests.get请求第三个参数中传入自己的header字典

responce = requests.get(url=url,params=param,headers=headers)

5.最后的代码

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)


6.解决后的结果

Python爬虫初学——Python爬取的搜狗网页数据出现乱码,(User-Agent)UA伪装操作过程_第2张图片

你可能感兴趣的:(python,爬虫,python)