社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

写python爬虫,你永远绕不过去代理问题

马哥Linux运维 • 2 月前 • 80 次点击  

如果你想要从事 Python 爬虫相关岗位,那你一定会接触到代理问题,随之而来的就是下面 5 大代理知识点。

  • 什么是代理:代理是网络中间人(中间商赚插件),它代表用户发送网络请求,隐藏用户的真实身份。

  • 代理类型:常见的代理类型有匿名代理、普通代理、高匿代理、混淆代理、HTTP 代理、Socks 代理等。

  • 爬虫与代理的关系:爬虫经常需要使用代理,以避免被网站封禁或者限制,代理可以让爬虫以代理的身份发送请求,从而隐藏爬虫的真实身份

  • 代理的使用:在 Python 中使用代理可以通过修改请求头中的代理地址来实现,也可以使用第三方库如requests-proxy 来管理代理。

  • 代理池:代理池是一个存储代理的数据结构,它可以方便地管理多个代理,但本篇博客不详细展开讲,==未来在爬虫训练场项目中将会构建一个代理池==。

什么是代理

代理是一种中间人(赚差价的中间商)的角色 🧔,它帮助用户发送网络请求 💻,同时隐藏用户的真实身份 🕵️‍♂️。

通俗的解释,就是你想去买某件见不得人的物品,自己不好意,然后请一个代理帮你完成这件事情。
代理人替你发送请求,并将物品送到你制定的地址,卖家只知道有代理人,不知道你是谁。

代理在网络中也是这样的工作方式,它代表用户发送请求,隐藏用户的真实身份。

代理类型

  • 匿名代理:装扮成别人,匿名代理隐藏了用户的真实身份,但是它并不是高度机密的。

  • 普通代理:一个普通的代理人,代表用户发送请求,但是不隐藏用户的真实身份。

  • 高匿代理:像警察装扮成卧底一样,高匿代理高度隐藏了用户的真实身份。

  • 混淆代理:间谍,混淆代理会混淆请求来源,使得很难追踪到真正的用户。

  • HTTP 代理:它是一种特殊类型的代理,专门处理 HTTP 请求。

  • Socks 代理:它也是一种特殊类型的代理,专门处理网络数据流。

上述这几种代理类型,使用难度最大的是 👉 高匿代理 👈。因为高匿代理在隐藏用户身份的同时,还要提供较高的网络安全性。

爬虫与代理的关系

这里橡皮擦尽量用通俗一点的文字进行描述。

当你使用爬虫爬取一个网站时,你相当于是一个游客,游览网站的内容,而网站服务器就是门卫大爷,负责检查每一个访问者是否合法。

如果网站服务器发现某个访问者正在大量地爬取网站内容,就可能会封锁它的 IP 地址,进而导致爬虫无法访问网站,从而导致爬取数据失败。

这时,就需要使用代理。代理就相当于是一个“中间人”🕵️‍♀️,当爬虫通过代理访问网站时,网站服务器就只能看到代理的 IP 地址,而无法看到真实的爬虫 IP 地址。

如果网站服务器封锁了代理的 IP 地址,那么你只需要更换代理,即可继续访问网站。

因此,使用代理可以有效地避免 IP 地址被封锁的情况,从而提高爬虫的爬取效率。

代理的使用,Python 语言

Python 的 requests 库可以方便地使用代理进行网络请求。例如我们使用 爬虫训练场 来进行测试。

import requests

# ip 是代理IP,port 是端口号
proxies = {
'http': 'http://IP:PORT',
'https': 'http://IP:PORT',
}

response = requests.get('http://pachong.vip', proxies=proxies)

print(response.text)

在上述代码中,咱使用了 http 代理和 https 代理。
proxies 字典中的键为代理类型,值为代理的 URL。
将 proxies 参数传递给 requests.get() 函数,这样就可以使用代理进行网络请求了。

代理池

代理池很容易理解,代理存放的池子,当我们使用代理时,可以从代理池中取出一个代理,在网络请求中使用。

在爬虫应用中,使用代理池可以避免频繁地从互联网上搜索代理,提高代理的使用效率。

在实战中,如果我们需要自己搭建代理池,一般情况下需要维护一个定期更新代理的程序,以确保代理的可用性。

链接:https://bbs.huaweicloud.com/blogs/399991

(版权归原作者所有,侵删)


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/168109
 
80 次点击