十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這篇文章主要介紹了在Python爬蟲過程中怎么使用代理IP,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供璧山網(wǎng)站建設(shè)、璧山做網(wǎng)站、璧山網(wǎng)站設(shè)計(jì)、璧山網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、璧山企業(yè)網(wǎng)站模板建站服務(wù),十載璧山做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
Python是一種跨平臺(tái)的、具有解釋性、編譯性、互動(dòng)性和面向?qū)ο蟮哪_本語言,其最初的設(shè)計(jì)是用于編寫自動(dòng)化腳本,隨著版本的不斷更新和新功能的添加,常用于用于開發(fā)獨(dú)立的項(xiàng)目和大型項(xiàng)目。
許多網(wǎng)站會(huì)在一定時(shí)間內(nèi)檢測到某個(gè)IP的訪問次數(shù)(通過流量統(tǒng)計(jì)、系統(tǒng)日志等),如果訪問次數(shù)多得不像正常人,就會(huì)禁止該IP的訪問。因此,我們可以設(shè)置一些代理服務(wù)器,每隔一段時(shí)間更換一個(gè)代理,即使IP被禁止,仍然可以更換IP繼續(xù)爬行。
1、設(shè)置代理服務(wù)器
通過ProxyHandler在request中設(shè)置使用代理服務(wù)器,代理的使用非常簡單,可以在專業(yè)網(wǎng)站上購買穩(wěn)定的ip地址,也可以在網(wǎng)上尋找免費(fèi)的ip代理。
免費(fèi)開放代理基本沒有成本。我們可以在一些代理網(wǎng)站上收集這些免費(fèi)代理。如果測試后可以使用,我們可以在爬蟲上收集它們。
2、selenium使用代理ip
selenium在使用帶有用戶名和密碼的代理ip時(shí),不能使用無頭模式。
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'./proxy_auth_plugin.zip' manifest_json = """ { "version": "1.0.0", "manifest_version": 2, "name": "Chrome 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: "${host}", port: parseInt(${port}) }, bypassList: ["foobar.com"] } }; chrome.proxy.settings.set({value: config, scope: "regular"}, function() {}); function callbackFn(details) { return { authCredentials: { username: "${username}", password: "${password}" } }; } chrome.webRequest.onAuthRequired.addListener( callbackFn, {urls: [" "]}, ['blocking'] ); chrome.webRequest.onBeforeSendHeaders.addListener(function (details) { details.requestHeaders.push({name:"connection",value:"close"}); return { requestHeaders: details.requestHeaders }; }, {urls: [" "]}, ['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 chrome_options = webdriver.ChromeOptions() proxy_auth_plugin_path = create_proxy_auth_extension( proxy_host=proxyHost, proxy_port=proxyPort, proxy_username=proxyUser, proxy_password=proxyPass) chrome_options.add_extension(proxy_auth_plugin_path) driver = webdriver.Chrome(chrome_options=chrome_options)
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“在Python爬蟲過程中怎么使用代理IP”這篇文章對大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!