Python爬虫:UA伪装

本文介绍了爬虫的基本流程,包括指定URL、发起请求、获取响应数据和持久化存储。重点讲解了如何通过伪装User-Agent来避免被服务器识别为爬虫,并提供了使用requests库进行GET请求的示例,实现网页内容的保存到本地HTML文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、名词

二、查看user-agent:

三、实例:模拟一个简单的网页采集器

爬虫基本流程

UA伪装

 四、代码


参考:python爬虫基础(5:UA伪装)_Jeeson_Z的博客-CSDN博客

一、名词

User-Agent:是请求载体的身份标识
UA检测:门户网站会检测对应请求载体的身份标识,若检测到载体身份标识为某款浏览器,说明该请求是个正常请求。若不是,则表示该请求为不正常的请求(即爬虫,请求载体要么是基于浏览器要么是基于爬虫),服务器可能会拒绝该次请求

UA伪装:让爬虫对应的请求载体身份标识伪装城某一款浏览器。具体操作:将合适的User-Agent封装到一个字典中

二、查看user-agent:

打开网页按F12,Ctrl+R,点击网络,请求标头中有个User-Agent,表示请求载体的身份标识

三、实例:模拟一个简单的网页采集器

爬虫基本流程

1.指定URL

        打开一个网页,利用上面的链接作为 URL,这里只需要用到 query 一个参数即可,这个参数就是我们搜索的关键词,后面的参数可以先删去

# 指定url
url='https://www.sogou.com/web?query=%E7%BB%9F%E8%AE%A1%E5%AD%A6' # 乱码也可以用中文

        由于我们此时是打开的一个固定页面,不能把 query 写死了,所以需要处理 URL 携带的参数,将其封装到字典中,这样可以用 input() 动态获取想要的结果

kw=input('enter the keyword:')
param={'query':kw}
url='https://www.sogou.com/web'

2.发起请求

        上面封装字典的操作是因为,接下来发送请求对 URL 后面拼接这个 param 参数

response=requests.get(url=url,params=param)

        https://www.cnblogs.com/cindy-zl24/p/9403303.html 讲述了一些 requests 常用的方法

3.获取响应数据

        requests.get() 会返回一个相响应结果

page_text=response.text

4.持久化存储

        使用 with open() 自动新建本地文件,该函数是python用来打开本地文件的,他会在使用完毕后,自动关闭文件,相对open()省去了写close()的麻烦,关于该函数具体用法见Python——with open()的用法_python withopen_爬虫选手_不懂就问的博客-CSDN博客

file_name=kw+'.html'
with open(file_name,'w',encoding='utf-8') as fp:
    fp.write(page_text)
print(file_name,'保存成功')

         在这里我使用该函数创建了名为 kw.html 的 html 文件(Python 本身是支持这种类型的文件的),再把我们上面返回响应结果的文本写入这个文件,可得到内容如下的一个 html 文件

        点击该处用谷歌浏览器打开,结果无法访问,大概就是下面这样的页面:

 

UA伪装

        正因为服务器可能会拒绝请求,所以在第2步发起请求时,将请求头信息伪装为 header,再进行 get() 请求

header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.125 Safari/537.36'}
response=requests.get(url=url,params=param,headers=header)

        将这里我们浏览器的标识赋值给 header,这样我们在用 get() 访问时添加参数 headers,请求头信息就为我们指定的浏览器了

(访问成功)

 四、代码

import requests

# 指定url
url='https://www.sogou.com/web?query=%E7%BB%9F%E8%AE%A1%E5%AD%A6' # 乱码也可以用中文

# 处理url携带的参数:封装到字典中
kw=input('enter the keyword:')
param={'query':kw}
url='https://www.sogou.com/web'

# UA伪装
header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.125 Safari/537.36'}
response=requests.get(url=url,params=param,headers=header)# 请求头信息为header
page_text=response.text # 获取响应数据,得到网页HTML源码

# 存储数据
file_name=kw+'.html'
with open(file_name,'w',encoding='utf-8') as fp:    # 会默认存储在当前路径下
    fp.write(page_text)     # 写入
    
print(file_name,'保存成功')

### 安装配置 UA 用户代理伪装池 为了实现UA伪装,在Python中通常会利用`fake-useragent`库来创建一个动态的User-Agent列表。这个库能够自动获取最新的浏览器及其版本信息,从而生成真实的User-Agent字符串。 安装`fake-useragent`可以通过pip命令完成: ```bash pip install fake-useragent ``` 之后可以在脚本里通过如下方式初始化并使用它[^1]: ```python from fake_useragent import UserAgent ua = UserAgent() print(ua.chrome) # 输出Chrome浏览器的一个随机User-Agent ``` ### 配置HTTP请求代理池 对于构建代理池而言,首先需要收集大量的有效代理IP地址。这部分工作可以通过编写专门的小型爬虫程序去抓取互联网上免费提供的代理服务器资源页面,并验证这些代理的有效性和响应速度。一旦获得了足够的可用代理,则可将其存储于数据库或文件之中以便后续调用。 当执行实际的数据采集任务时,可以从预先建立好的代理池中随机选取一个代理来进行网页访问操作。下面是一个简单的例子展示如何结合`requests`模块以及之前提到过的`fake-useragent`一起工作的方法[^2]: ```python import requests from fake_useragent import UserAgent import random # 假设这里有一个有效的代理列表 proxies_list = [ 'http://192.0.2.1:80', 'http://198.51.100.2:80' ] def get_random_proxy(): proxy = random.choice(proxies_list) proxies = {"http": proxy, "https": proxy} return proxies url = 'http://example.com' headers = {'User-Agent': ua.random} response = requests.get(url, headers=headers, proxies=get_random_proxy()) print(response.status_code) ``` 上述代码片段展示了怎样在一个GET请求中同时应用随机化的User-Agent头和来自预定义集合中的某个HTTP(S)代理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SeverinZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值