python爬虫实战之IP限制_爬虫设置ip代理

liftword3周前 (02-06)技术文章17

在我们平时写爬虫时经常会遇到一些情况:本来写的爬虫一开始能正常爬取数据,运行一顿时间后有时候会出现错误比如403错误,网页上可能会出现“您的IP访问频率过高” 或者跳出一个验证码提示需要输入验证码。这就是触发了网站的一些反爬机制,比如限制IP访问频率,超过了预先设置的范围,服务器就会拒绝服务,返回一些错误或验证措施,这种情况就叫做IP限制。这时候我们就可以借助一些方法来伪装IP,让服务器无法识别我们的真实IP。现在引入一个新的概念代理IP。

一、何为代理IP

代理IP,即代理服务器,确实在网络访问中起到了一个中转站的作用。当个人浏览器或其他客户端设备发出网络请求时,这个请求会首先被发送到代理服务器,然后由代理服务器转发给目标网站。同样,目标网站的响应也会先发送到代理服务器,再由代理服务器转发给原始的请求者。这样,对于目标网站来说,它实际检测到的访问数据都来自于这个代理服务器,而不是原始的请求者。使用代理ip可以绕过目标网站限制,更好的抓取网络数据,可以自定义时间更换ip地址,提高爬虫效率。需要注意的是,虽然代理IP带来了很多便利,但使用不当也可能带来一些问题,比如数据安全问题、隐私泄露风险等。因此,在使用代理IP时,用户需要选择可靠的代理服务提供商,并遵守相关的法律法规和道德准则。

二、requests设置代理

以下程序演示了利用requests如何设置代理:

import requests
proxies={
    "https":"https://221.194.149.8"
}
url='http://www.baidu.com'
resp=requests.get(url,proxies=proxies)
resp.encoding='utf-8'
print(resp.text)

三、代理池的构建

代理池顾名思义,就是好多代理IP组成的一个集合,我们称之为代理池。我们在做爬虫时一般对代理IP的需求量比较大,当我们请求时,从代理池中取出一个代理进行使用。要构建代理池,如果不差钱可以直接淘宝购买一些代理IP就可以了,既稳定又不是很贵。当然要马儿不吃草,还要马儿跑的快,我们可以从网上找一些免费的代理,通过我们的爬虫技术爬取下来也是可以的。无论采用哪种方式构建代理池,都需要定期验证代理的有效性,并及时剔除失效的代理。

下面的例子是从国内网站免费获取代理IP:

import  requests
from bs4 import  BeautifulSoup

url="https://www.zdaye.com/free/"
headers={
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36"
}
resp=requests.get(url,headers=headers)
bs=BeautifulSoup(resp.text,'html.parser')
res_list=bs.find_all('tr')
ip_list=[]
for res in res_list:
    tds=res.find_all('td')
    if tds:
        ip_list.append({"IP":tds[0].text,"port":tds[1].text})
#循环显示获取到的代理IP
for ip in ip_list:
    print(ip)

获取到代理IP后我们要验证是否可用,方法比较简单就是连上代理后看2秒左右能不能打开百度网站,如果能打开说明可用,不能打开从代理池中剔除。

import  requests
import  socket
socket.setdefaulttimeout(2)
proxy='54.223.16.166:3128' #循环获取上面获取的代理IP 和端口
proxies={'http':proxy}
try:
    res=requests.get("http://www.baidu.com",proxies=proxies)
    if res.status_code==200:
        print("当前代理IP可使用")
except:
    print("当前代理IP不可使用")

在实际项目中,我们可能会获取到很多的代理IP,这时候我们还是建议将验证过的IP存放到数据库中,如Redis 或其他数据库,每次使用时,我们直接从数据库中取就行了。

相关文章

从原理到实战,一份详实的 Scrapy 爬虫教程

来源:早起Python作者:饮马长江大家好,我是早起。之前分享了很多 requests 、selenium 的 Python 爬虫文章,本文将从原理到实战带领大家入门另一个强大的框架 Scrapy。如...

30分钟掌握用Python写网络爬虫,入门到实战教程,黑客入门第一步

在如今的大数据时代,相信大家都对Python一词有所耳闻。而Python爬虫,简单来说,即通过Python程序获取对我们有用的数据。常用于商业分析,不过偶尔也可以辅助我们解决在日常生活中遇到的一些问题...

盘点一个使用playwright实现网络爬虫的实战案例

大家好,我是皮皮。一、前言前几天在Python白银交流群【空翼】问了一个Pyhton网络爬虫的问题,这里拿出来给大家分享下。二、实现过程【喜靓仔】提出用playwright实现,后来他自己给出了代码,...

超级实用!Python爬虫实战攻略_python爬虫最全教程

# 小伙伴们,大家好!今天猿梦家要带大家一起玩转Python爬虫! 爬虫,简单来说,就是用程序自动访问网页并抓取数据的技术。 它就像是一个勤劳的小蜜蜂,在互联网的花海中采集我们需要的信息。话不多说,咱...

从0教你用Python写网络爬虫,内容详细代码清晰,适合入门学习

爬虫是入门Python最好的方式之一,掌握Python爬虫之后再去学习Python其他知识点,会更加地得心应手。当然,用Python爬虫对于零基础的朋友来说还是有一定难度的,那么朋友,你真的会Pyth...

豆瓣9.4,Python网络爬虫实战,助你快速精通爬虫,PDF拿走不谢

计算机技术飞速发展,人们对计算机使用技能的要求也越来越高。在编写软件时,大家既希望有超高的效率,又希望这门语言简单易用。这种鱼与熊掌皆得的要求的确很高,Python编程语言恰好符合这么苛刻的要求。Py...