python爬虫-------urllib代理和代理池(第十七天)

这篇具有很好参考价值的文章主要介绍了python爬虫-------urllib代理和代理池(第十七天)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

python爬虫-------urllib代理和代理池(第十七天),python爬虫学习,python,开发语言,爬虫

🎈🎈作者主页: 喔的嘛呀🎈🎈
🎈🎈所属专栏:python爬虫学习🎈🎈
✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 

嗨嗨嗨,兄弟姐妹们。我是喔的嘛呀。今天的学习内容是:爬虫 urllib代理和代理池

目录

一、爬虫 urllib——代理

二、爬虫 urllib——代理池


一、爬虫 urllib——代理

在 Python爬虫 中,可以使用 urllib 库来发送 HTTP 请求,从而实现网络爬虫功能。使用代理(Proxy)可以隐藏真实 IP 地址,防止被目标网站封禁或限制访问频率。下面是使用 urllib 库发送带代理的 HTTP 请求的示例代码:

from urllib import request

# 代理地址,格式为 <http://host>:port
proxy_address = 'http://your_proxy_host:your_proxy_port'

# 构建代理处理器
proxy_handler = request.ProxyHandler({'http': proxy_address})

# 创建Opener
opener = request.build_opener(proxy_handler)

# 安装Opener
request.install_opener(opener)

# 发送请求
response = request.urlopen('<http://www.example.com>')

# 输出响应内容
print(response.read().decode('utf-8'))

在上面的代码中,首先构建了一个代理处理器 proxy_handler,指定了代理地址 proxy_address,然后通过 build_opener 创建了一个 Opener,并通过 install_opener 安装 Opener,使得后续的请求都会使用这个 Opener 发送。最后使用 urlopen 发送带有代理的请求,获取并输出响应内容。

请注意,使用代理需要注意代理服务器的稳定性和合法性,不当使用可能会触犯相关法律法规。

案例:

展示如何使用代理 IP 来爬取豆瓣电影 Top 250 的数据。请注意,豆瓣网站有反爬虫机制,使用代理 IP 可以帮助降低被封禁的风险。(主要演示如何使用代理)

from urllib import request
from bs4 import BeautifulSoup
import random
import time

# 代理地址,格式为 <http://host>:port  需要自己在网站上购买,或者找能够免费使用的(质量不高,不稳定)
proxy_address = 'http://your_proxy_host:your_proxy_port'

# 豆瓣电影 Top 250 的 URL
url = '<https://movie.douban.com/top250>'

# 用户代理列表,模拟不同浏览器的访问
user_agents = [
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:85.0) Gecko/20100101 Firefox/85.0',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'
]

# 设置代理和随机用户代理
proxy_handler = request.ProxyHandler({'http': proxy_address})
opener = request.build_opener(proxy_handler)
opener.addheaders = [('User-Agent', random.choice(user_agents))]
request.install_opener(opener)

# 发送请求
response = request.urlopen(url)

# 解析HTML内容
soup = BeautifulSoup(response.read(), 'html.parser')
movies = soup.find_all('div', class_='hd')

# 输出电影名字和链接
for movie in movies:
    movie_name = movie.a.span.text
    movie_link = movie.a['href']
    print(f'电影名字:{movie_name}\\n链接:{movie_link}\\n\\n')

# 模拟爬取过程
for i in range(5):
    print(f"模拟第{i+1}次爬取...")
    time.sleep(random.randint(1, 3))

在这个示例中,我们使用了一个代理服务器(proxy_address),并通过随机选择用户代理(User-Agent)来发送请求。我们爬取了豆瓣电影 Top 250 的页面,并提取了每部电影的名字和链接信息。为了模拟更真实的访问行为,我们添加了一个简单的循环,模拟多次爬取过程,并在每次爬取之间随机等待一段时间。

二、爬虫 urllib——代理池

使用代理池进行爬虫可以帮助我们更好地隐藏真实 IP 地址、绕过访问限制或提高访问速度。下面是一个使用代理池的详细示例,展示了如何使用 urllib 库和代理池进行网页爬取:

from urllib import request
import random

# 代理池,包含多个代理地址
proxy_pool = [
    '<http://proxy1.example.com>:port',
    '<http://proxy2.example.com>:port',
    '<http://proxy3.example.com>:port'
]

# 从代理池中随机选择一个代理
proxy = random.choice(proxy_pool)
proxy_handler = request.ProxyHandler({'http': proxy})

# 创建Opener并安装
opener = request.build_opener(proxy_handler)
request.install_opener(opener)

# 发送请求
url = '<https://www.example.com>'
response = request.urlopen(url)

# 读取并打印响应内容
print(response.read().decode('utf-8'))

在这个示例中,我们首先定义了一个代理池 proxy_pool,包含了多个代理地址。然后,我们随机选择了一个代理地址,并使用 ProxyHandler 创建了代理处理器。接着,我们创建了一个 Opener,并安装了代理处理器。最后,我们发送了一个请求到指定的 URL,并读取并打印了响应内容。

需要注意的是,使用代理池时应该遵守网站的爬取规则,避免对网站造成不必要的负担。

以下是一个示例,展示如何使用代理池和 urllib 库来爬取网站的内容,并处理可能的异常情况,同时设置了请求头和超时时间:

from urllib import request, error
import random
import time

# 代理池,包含多个代理地址
proxy_pool = [
    '<http://proxy1.example.com>:port',
    '<http://proxy2.example.com>:port',
    '<http://proxy3.example.com>:port'
]

# 用户代理列表,模拟不同浏览器的访问
user_agents = [
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:85.0) Gecko/20100101 Firefox/85.0',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'
]

# 设置超时时间(秒)
timeout = 10

# 最大重试次数
max_retries = 3

# 从代理池中随机选择一个代理
proxy = random.choice(proxy_pool)
proxy_handler = request.ProxyHandler({'http': proxy})

# 随机选择一个用户代理
user_agent = random.choice(user_agents)

# 创建Opener并安装
opener = request.build_opener(proxy_handler)
opener.addheaders = [('User-Agent', user_agent)]
request.install_opener(opener)

# 网站 URL
url = '<https://www.example.com>'

# 记录重试次数
retries = 0

while retries < max_retries:
    try:
        # 发送请求
        response = request.urlopen(url, timeout=timeout)
        # 读取并打印响应内容
        print(response.read().decode('utf-8'))
        break
    except error.HTTPError as e:
        print(f"HTTPError: {e.code} - {e.reason}")
    except error.URLError as e:
        print(f"URLError: {e.reason}")
    except Exception as e:
        print(f"Error: {e}")
    
    # 等待一段时间后重试
    time.sleep(1)
    retries += 1

if retries == max_retries:
    print("Reached maximum number of retries. Failed to retrieve data.")

在这个示例中,我们定义了一个代理池和用户代理列表,随机选择代理地址和用户代理,并设置了请求头和超时时间。然后,使用代理池和设置的请求头发送请求,处理可能的异常情况,并实现了重试机制。

每天进步一点点,不管做什么都是一样的。加油兄弟姐妹们!文章来源地址https://www.toymoban.com/news/detail-850508.html

到了这里,关于python爬虫-------urllib代理和代理池(第十七天)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 算法第十七天-构造有效字符串的最少插入数

    考虑abc的个数 假设答案有n个\\\"abc\\\"组成,那么需要插入的字符个数为 3 ∗ n − l e n ( s ) 3*n - len(s) 3 ∗ n − l e n ( s ) 。 对于相邻的两个字符x和y(x在y左侧): 如果 x y xy x y ,那么x和y可以在同一个\\\"abc\\\"内,否则一定不在; 如果 x ≥ y xge y x ≥ y ,那么x和y一定不可以在同一个

    2024年01月17日
    浏览(33)
  • Python爬虫学习笔记(三)————urllib

    目录 1.使用urllib来获取百度首页的源码 2.下载网页图片视频  3.总结-1 4.请求对象的定制(解决第一种反爬)   5.编解码 (1)get请求方式:urllib.parse.quote() (2)get请求方式:urllib.parse.urlencode() (3)post请求方式 6.ajax的get请求 (1)获取豆瓣电影的第一页的数据 (2)下

    2024年02月16日
    浏览(30)
  • 【Python爬虫开发实战①】使用urllib以及XPath爬取可爱小猫图片

    个人主页 :为梦而生~ 关注我一起学习吧! 专栏 :python网络爬虫从基础到实战 欢迎订阅!后面的内容会越来越有意思~ 往期推荐 : 【Python爬虫开发基础⑦】urllib库的基本使用 【Python爬虫开发基础⑧】XPath库及其基本用法 我们在之前已经有8篇文章讲述基础知识了,下面我们

    2024年02月11日
    浏览(39)
  • 【Python爬虫开发实战②】使用urllib以及jsonpath爬取即将上映电影信息

    🚀 个人主页 :为梦而生~ 关注我一起学习吧! 💡 专栏 :python网络爬虫从基础到实战 欢迎订阅!后面的内容会越来越有意思~ 💡 往期推荐 : ⭐️首先,我们前面讲了多篇基础内容: 【Python爬虫开发基础④】爬虫原理 【Python爬虫开发基础⑤】HTML概述与基本标签详解 【P

    2024年02月12日
    浏览(32)
  • 【算法第十七天8.1】530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先

    链接 力扣530-二叉搜索树的最小绝对差 思路 链接 力扣501-二叉搜索树中的众数 思路 链接 力扣236.二叉树的最近公共祖先 思路

    2024年02月14日
    浏览(35)
  • 第八十七天学习记录:Linux基础:基础指令Ⅱ

    可以通过touch命令创建文件 语法:touch Linux路径 1、touch命令无选项,参数必填,表示要创建的文件路径,相对、绝对、特殊路径符均可以使用 首先用Vim编辑器在刚刚新建的tanktest.txt中编辑些内容。 语法:cat Linux路径 cat同样没有选项,只有必填的参数,参数表示:被查看的文

    2024年02月11日
    浏览(35)
  • Python爬虫——Urllib

    爬虫小白 爬虫语法 爬虫技术 1、什么是互联网爬虫 通过一个程序,根据url进行爬取网页,获取游泳信息 通过程序模拟浏览器,去向服务器发起请求,获取响应信息 2、爬虫核心 爬取网页:爬取整个网页,包含了网页中所有内容 解析数据:将网页中得到的数据进行解析 难点

    2024年02月13日
    浏览(34)
  • 基于Python的HTTP代理爬虫开发初探

    前言 随着互联网的发展,爬虫技术已经成为了信息采集、数据分析的重要手段。然而在进行爬虫开发的过程中,由于个人或机构的目的不同,也会面临一些访问限制或者防护措施。这时候,使用HTTP代理爬虫可以有效地解决这些问题,避免被目标网站封禁或者限制访问。   一

    2024年02月12日
    浏览(25)
  • [Python]爬虫基础——urllib库

    urllib库是Python内置的标准库。包含以下四个模块: 1、request:模拟发送HTTP请求; 2、error:处理HTTP请求错误时的异常; 3、parse:解析、拆分、合并URL; 4、robotparser:解析网站的robots.txt文件 案例: 爬取知乎网站的数据 首先要构造HTTP请求,然后将HTTP响应的各部分进行输出 第一步

    2024年02月03日
    浏览(64)
  • Python网络爬虫库urllib详解

    了解Python标准库中的urllib模块,掌握URL解析、发送HTTP请求、文件下载等操作。

    2024年02月08日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包