以下是一个使用Python的requests
库结合代理IP来进行简单网页访问的示例代码,这里我们假设你已经有了可用的代理IP列表,示例代码主要展示如何在代码里设置使用代理IP发起请求:
在上述代码中:
通过proxies
字典来定义代理IP的相关信息,其中http
键对应的是HTTP协议使用的代理IP地址和端口,https
键对应的是HTTPS协议使用的代理IP地址和端口。这里示例写的127.0.0.1:8888
只是本地的一个示例格式,你需要替换为真实有效的代理IP及对应的端口号。
使用requests.get()
方法去访问指定的url
,并且通过proxies
参数传入代理IP的设置信息,同时设置了timeout
参数为5秒,也就是如果请求在5秒内没有响应就会抛出异常结束。然后根据返回的response
对象来判断请求是否成功(状态码为200
表示成功),如果成功就打印网页的文本内容,否则打印相应的失败提示信息;要是在请求过程中出现如网络连接等异常情况,则会捕获异常并打印异常相关的提示内容。
如果要更完善一些,可以结合从外部文件读取代理IP列表轮流使用的示例
在实际应用爬虫时,往往不会只用一个代理IP,可能有多个代理IP列表,我们可以将代理IP存放在文本文件等外部文件中,然后轮流使用它们,以下是一个示例代码,假设代理IP的文本文件proxies.txt
里每行是一个代理IP地址(格式如127.0.0.1:8888
,并且按协议分好,也就是如果支持HTTP和HTTPS都是这个IP和端口,那就写两行,一行开头http://
,一行开头https://
):
在这个更完善的示例里:
从文件读取代理IP函数:read_proxies_from_file
函数接受一个文件路径参数,打开对应的文件后按行读取内容,每两行作为一组(第一行作为HTTP代理IP,第二行作为HTTPS代理IP)构建成字典形式添加到proxies_list
列表中,最后返回这个包含所有代理IP配置字典的列表。
循环使用代理IP请求:
通过循环遍历proxies_list
,每次使用其中一个代理IP配置去发起对目标网址(这里还是以https://www.example.com
为例)的请求,如果请求成功(状态码为200
),则打印网页内容并且使用break
跳出循环不再尝试其他代理IP;如果请求失败或者出现异常,则会相应地打印提示信息,然后继续尝试下一个代理IP。
如果想要更灵活地管理代理IP,比如自动验证代理IP是否可用、动态更新代理IP列表等,还需要添加更多的代码逻辑来实现这些功能,比如可以在每次使用代理IP前发送一个简单的测试请求到已知的网址来验证其是否可用等操作。