您的位置: 首页 > 新闻资讯 > 正文

如何避免爬虫时IP出状况?

发布时间:2019-11-21 14:39:09 来源:

爬取数据怎么才能更加顺利,IP不会被封?今天黑洞代理介绍给大家2个可以避免爬虫的时候IP被封的方法,希望可以有效帮助到大家开展爬虫工作。

如何避免爬虫时IP出状况?

第一种:

降低访问速度,我们可以使用time模块中的sleep,使程序每运行一次后就睡眠1s,这样的话就可以大大的减少IP被封的几率。

第二种:

为了提高效率,我们可以使用代理IP来解决,以下是代理配置过程的示例,看看具体的代码部分:

Selenium

from selenium import webdriver

import string

import zipfile

# 代理服务器

proxyHost = "t.16yun.cn"

proxyPort = "31111"

# 代理隧道验证信息

proxyUser = "username"

proxyPass = "password"

def create_proxy_auth_extension(proxy_host, proxy_port,

proxy_username, proxy_password,

scheme='http', plugin_path=None):

if plugin_path is None:

plugin_path = r'C:/{}_{}@t.16yun.zip'.format(proxy_username, proxy_password)

manifest_json = """ { "version": "1.0.0", "manifest_version": 2, "name": "16YUN Proxy", "permissions": [ "proxy", "tabs", "unlimitedStorage", "storage", "", "webRequest", "webRequestBlocking" ], "background": { "scripts": ["background.js"] }, "minimum_chrome_version":"22.0.0" } """

background_js = string.Template(

""" var config = { mode: "fixed_servers", rules: { singleProxy: { scheme: "

scheme",host:"", port: parseInt($) }, bypassList: ["foobar.com"] } };

chrome.proxy.settings.set(, function() {});

function callbackFn(details) { return { authCredentials: { username: "

username",password:"" } }; }

chrome.webRequest.onAuthRequired.addListener( callbackFn, , ['blocking'] ); """

).substitute(

host=proxy_host,

port=proxy_port,

username=proxy_username,

password=proxy_password,

scheme=scheme,

)

with zipfile.ZipFile(plugin_path, 'w') as zp:

zp.writestr("manifest.json", manifest_json)

zp.writestr("background.js", background_js)

return plugin_path

proxy_auth_plugin_path = create_proxy_auth_extension(

proxy_host=proxyHost,

proxy_port=proxyPort,

proxy_username=proxyUser,

proxy_password=proxyPass)

option = webdriver.ChromeOptions()

option.add_argument("--start-maximized")

# 如报错 chrome-extensions

# option.add_argument("--disable-extensions")

option.add_extension(proxy_auth_plugin_path)

driver = webdriver.Chrome(chrome_options=option)

driver.get(http://httpbin.org/ip)

代码部分的代理IP内容,大家可以自行填充自己购买的代理IP来使用即可,这样整段代码就可以直接拿来用了。


相关文章内容简介

1 如何避免爬虫时IP出状况?

  爬取数据怎么才能更加顺利,IP不会被封?今天黑洞代理介绍给大家2个可以避免爬虫的时候IP被封的方法,希望可以有效帮助到大家开展爬虫工作。  第一种:  降低访问速度,我们可以使用time模块中的sleep,使程序每运行一次后就睡眠1s,这样的话就可以大大的减少IP被封的几率。  第二种:  为了提高效率,我们可以使用代理IP来解决,以下是代... [阅读全文]

最新标签