Python:使用代理IP 进行网络爬虫

在进行爬虫时,有时爬取的次数多了,会遇到无法访问的情况,很可能是IP被该网站封了,为了避免这个,我们需要可以使用代理IP ,目前有很多网站提供免费的代理IP ,如西拉免费代理IP快代理等,但是这些IP的缺陷就是很不稳定,可能下一次测试就不能使用了,因此在实际工程中可以购买稳定的代理IP。本文主要介绍如何使用代理IP进行网站爬取。每种方式添加参数不太一样,亲测可用。

1 使用requests

import requests

url ='http://httpbin.org/get'
i = '186.226.174.193:80'

# 设置代理参数
proxies = {
    'http': 'http://' + i,
    'https': 'https://' + i,
}

try:
    response = requests.get(url, proxies=proxies)
    print(response.text)
except requests.exceptions.ConnectionError as e:
    print('Error', e.args)

2 使用selenium

2.1 Chromedriver
from selenium import webdriver

url ='http://httpbin.org/get'
# 设置参数
ip = '20.80.89.20:80'
option = webdriver.ChromeOptions()
option.add_argument(('--proxy-server=' + ip))
browser = webdriver.Chrome(options=option)

# 对网址进行爬取
browser.get(url)
html = browser.page_source
2.2 PlantomJS
from selenium.webdriver import PhantomJS

url ='http://httpbin.org/get'
service_args = [
        '--proxy=20.80.89.20:80',
        '--proxy-type=http']
browser = PhantomJS(service_args=service_args)
# 对网址进行爬取
browser.get(url)
html = browser.page_source
2.3 Firefox

Firefox的代理设置,目前没有找到比较简单的方式,如有请留言。

from selenium import webdriver
from selenium.webdriver import FirefoxOptions
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile


profile = FirefoxProfile()

# 激活手动代理配置
profile.set_preference("network.proxy.type", 1)
# ip及其端口号配置为 http 协议代理
profile.set_preference("network.proxy.http", "157.7.199.56")
profile.set_preference("network.proxy.http_port", 1080)

# 所有协议共用一种 ip 及端口,如果单独配置,不必设置该项,因为其默认为 False
# profile.set_preference("network.proxy.share_proxy_settings", True)

driver = webdriver.Firefox(profile)
url = 'http://httpbin.org/get'
driver.get(url=url)
print(driver.page_source)
driver.close()

参考文献

  1. 《Python3 网络爬虫开发实战》
  2. Python | Firefox IP代理
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值