1. 程式人生 > >Python爬蟲(代理的使用)

Python爬蟲(代理的使用)

好多網站都有反爬措施,例如很多網站會檢測某一段時間某一個IP的訪問次數太過於頻繁,就有可能會禁止這個IP的訪問。當然面對這種情況可定也有相應的措施,我們只要隔一段時間換一個IP就可以了。因此我們就需要一些代理伺服器,每隔一段時間換一個代理,就算IP被禁止,依然可以換個IP繼續爬。

在python中,可以使用urllib2中的ProxyHandler來設定使用代理伺服器,下面通過程式碼說明如何來使用代理:

這裡寫圖片描述

# coding=utf-8
import urllib2

#構建了兩個代理Handler,一個代理IP,一個沒有代理IP

httpproxy_handler = urllib2.ProxyHandler({"http"
:"124.88.67.81:80"}) nullproxy_handler = urllib2.ProxyHandler({}) #定義一個代理開關 proxySwitch = False # 通過urllib2.build_opener()方法使用這些代理Hanlder物件,建立自定義opener物件 # 根據代理開關是否開啟,使用不同的代理模式 if proxySwitch: opener = urllib2.build_opener(httpproxy_handler) else: opener = urllib2.build_opener(nullproxy_handler) request = urllib2.Request("http://www.baidu.com/"
) # 使用opener.open()方法傳送請求才使用自定義的代理,而urlopen()則不使用自定義代理。 response = opener.open(request) # 就是將opener應用到全域性,之後所有的,不管是opener.open()還是urlopen() 傳送請求,都將使用自定義代理。 # urllib2.install_opener(opener) # response = urlopen(request) print response.read()

遇到問題:
當定義一個代理開關

proxySwitch = True 用代理時候執行報錯;urllib2.URLError: <urlopen error [Errno 10060] >

提示連線失敗。

為了分析這一問題的原因,擼主採用瞭如下過程:
1、在瀏覽器裡輸入,可以正常開啟,說明該站點是可以訪問的。
2、同樣的指令碼放在公司的體驗網上執行OK,說明指令碼本身沒有問題。

那就說明這個代理ip不能用所以導致這問題,選擇不用ip代理proxySwitch = False;順利爬到程式碼;

上面使用的是免費的開放代理,我們可以在一些代理網站上收集這些免費代理,測試後如果可以用,就把它收集起來用在爬蟲上面。

免費代理網站:

西刺免費代理

快代理免費代理

全國代理ip

如果你有足夠多的代理,可以放在一個列表中,隨機選擇一個代理去訪問網站。如下:

import urllib2
import random

proxy_list = [
    {"http" : "124.88.67.81:80"},
    {"http" : "124.88.67.81:80"},
    {"http" : "124.88.67.81:80"},
    {"http" : "124.88.67.81:80"},
    {"http" : "124.88.67.81:80"}
]

# 隨機選擇一個代理
proxy = random.choice(proxy_list)
# 使用選擇的代理構建代理處理器物件
httpproxy_handler = urllib2.ProxyHandler(proxy)

opener = urllib2.build_opener(httpproxy_handler)

request = urllib2.Request("http://www.baidu.com/")
response = opener.open(request)
print response.read()

上面使用的都是免費代理,不是很穩定,很多時候會出現無法使用的情況,這時候可以考慮使用私密代理。也就是向代理供應商購買代理,供應商會提供一個有效代理,並且有自己的使用者名稱和密碼,具體使用和免費代理一樣,這是多了一個賬戶認證,如下:

# 構建具有一個私密代理IP的Handler,其中user為賬戶,passwd為密碼
httpproxy_handler = urllib2.ProxyHandler({"http" : "user:[email protected]:80"})

上面就是使用urllib2設定代理的方法,不過看起來有些麻煩,下面我們看看如何使用reqursts來使用代理。

使用免費代理:

import requests

# 根據協議型別,選擇不同的代理
proxies = {
  "http": "http://12.34.56.79:9527",
  "https": "http://12.34.56.79:9527",
}

response = requests.get("http://www.baidu.com", proxies = proxies)
print response.text

使用私密代理:

import requests

# 如果代理需要使用HTTP Basic Auth,可以使用下面這種格式:
proxy = { "http": "mr_mao_hacker:[email protected]:16816" }

response = requests.get("http://www.baidu.com", proxies = proxy)

print response.text

這樣看起來簡單不少。

注:可以將賬戶密碼寫入環境變數以免洩露

相關推薦

python爬蟲:實戰 【1. 檢驗代理ip小程式】

# 檢驗代理ip是否可用 import requests proxy_id = { "http": "http://110.73.42.32:8123"} r = requests.get('http://ip.webmasterhome.cn/', proxies=proxy_id)

python 爬蟲使用代理模擬瀏覽器

import urllib.request import random url = "http://www.baidu.com" #建立一個代理列表,每次隨機使用一個,防止被封IP agnetsList = [ "Mozilla/5.0 (iPad; U; CPU O

Python爬蟲代理的使用

好多網站都有反爬措施,例如很多網站會檢測某一段時間某一個IP的訪問次數太過於頻繁,就有可能會禁止這個IP的訪問。當然面對這種情況可定也有相應的措施,我們只要隔一段時間換一個IP就可以了。因此我們就需要一些代理伺服器,每隔一段時間換一個代理,就算IP被禁止,依然可

小白學 Python 爬蟲31:自己構建一個簡單的代理

人生苦短,我用 Python 前文傳送門: 小白學 Python 爬蟲(1):開篇 小白學 Python 爬蟲(2):前置準備(一)基本類庫的安裝 小白學 Python 爬蟲(3):前置準備(二)Linux基礎入門 小白學 Python 爬蟲(4):前置準備(三)Docker基礎入門 小白學 Pyth

Python爬蟲:基本概念

popu 通用 字符 spider dai 自身 部分 螞蟻 people 網絡爬蟲的定義 網絡爬蟲(Web Spider。又被稱為網頁蜘蛛。網絡機器人,又稱為網頁追逐者),是一種依照一定的規則,自己主動的抓取萬維網信息的程序或者腳本。另外一些不常使用

python爬蟲

返回 沒有 發現 學習內容 部分 訪問 family 司機 獲得 1.首先你需要一些Python的基礎知識和相關的開發環境,沒有相關基礎的同學推薦可以先去網易雲的Mooc觀看學習相關教程 2.什麽是網絡爬蟲?   我們上網會在瀏覽器中輸入連接,然後服務器會返回給我們相關的信

53. Python 爬蟲2

expires www. als aid rgb user col pri request CookieRequests通過會話信息來獲取cookie信息Cookie的五要素: Name value domain path expires打印cookie

54. Python 爬蟲3

你是 需要 理解 match 網站 for 3.2 rst e30 【基於python3的版本】rllib下載:當不知道urlretrieve方法,寫法如下:from urllib import request url = "http://inews.gtimg.

55. Python 爬蟲4

wait login 插件 asc 16px 全自動 搜索欄 find tao webdriverSelenium是ThroughtWorks公司開發的一套Web自動化測試工具。它分為三個組件:Selenium IDE Selenium RC (Remote Control

python爬蟲1

log 圖片 resp color 解析url www. blog robots gbk   在開始學習爬蟲之前,我花了大概兩周時間來熟悉python3的基本語法。   相比較於我的啟蒙語言VB,python的優美之處讓我深有體會。人生苦短,我用python! 一、關於爬蟲

python爬蟲3——SSL證書與Handler處理器

pan 高級 訪問網站 size cos 中文名 ssl 內核 pos 一、SSL證書問題              上一篇文章,我們創建了一個小爬蟲,下載了上海鏈家房產的幾個網頁。實際上我們在使用urllib聯網的過程中,會遇到證書訪問受限的問題。     處理HTTPS

python爬蟲4——正則表達式

做了 cati 二手房 表達 發展 他能 query nta package     在前幾篇文章中我們使用了python的urllib模塊,做了一些訪問網頁的工作。現在介紹一個非常強大的工具——正則表達式。在講述正則的時候,我參考了《精通正則表達式(第三版) --

python爬蟲5——正則表達式

org handle uil urlopen 意思 esp 下載 header 因此     前一篇文章,我們使用re模塊來匹配了一個長的字符串其中的部分內容。下面我們接著來作匹配“[email protected] advantage 314159265358 18

python爬蟲6——正則表達式

dpa 方法 d+ 調用 我只 open write pid dump     下面,我再寫一個例子,加強對正則表達式的理解。還是回到我們下載的那個二手房網頁,在實際中,我們並不需要整個網頁的內容,因此我們來改進這個程序,對網頁上的信息進行過濾篩選,並保存我們需要的內容。打

Python爬蟲網絡爬蟲的尺寸與約束

.cn 哪些 com 尺寸 網頁 inf robot robots 搜索 Infi-chu: http://www.cnblogs.com/Infi-chu/ 一、網絡爬蟲的尺寸: 1.小規模,數據量小,爬取速度不敏感,Requests庫,爬取網頁 2.中規模,數據

python 爬蟲 requests+BeautifulSoup 爬取簡單網頁代碼示例

utf-8 bs4 rom 文章 都是 Coding man header 文本 以前搞偷偷摸摸的事,不對,是搞爬蟲都是用urllib,不過真的是很麻煩,下面就使用requests + BeautifulSoup 爬爬簡單的網頁。 詳細介紹都在代碼中註釋了,大家可以參閱。

自學python爬蟲selenium庫的使用

一、基本概念 selenium,是一種自動化測施工具,支援多種瀏覽器。爬蟲中主要用來解決JavaScript渲染問題。 二、具體用法 說在前面:筆者是以GooleChrome瀏覽器來進行測試的,當然其他瀏覽器也可以,具體下面會講到不同的瀏覽器不同做法。 1、下載安裝:chr

自學python爬蟲PyQuery使用

一、概念 PyQuery庫也是很強大的網頁解析庫,適合熟悉Jquery的人使用,因為PyQuery和Jquery的API幾乎一模一樣。 二、詳細講解 1、初始化 1.1字串初始化 # 字串初始化 html = """ <div> <ul>

自學python爬蟲BeautifulSoup庫的介紹

一、概念 BeautifulSoup是靈活又方便的網頁解析庫,處理高效。支援多種直譯器。利用它可以不用編寫正則表示式即可方便地實現網頁資訊的提取。 二、解析庫 三、例項講解 下面用到的程式碼 html = """<html> <head>

自學python爬蟲Requests+正則表示式爬取貓眼電影

前言 學了requests庫和正則表示式之後我們可以做個簡單的專案來練練手咯!先附上專案GitHub地址,歡迎star和fork,也可以pull request哦~ 地址:https://github.com/zhangyanwei233/Maoyan100.git 正文開始哈哈哈