2012-09-17 64 views
4

這些都是在蟒蛇履帶的定義:如何代理添加到BeautifulSoup履帶

from __future__ import with_statement 

from eventlet.green import urllib2 
import eventlet 
import re 
import urlparse 
from bs4 import BeautifulSoup, SoupStrainer 
import sqlite3 
import datetime 

如何我添加了一個旋轉的代理(每線程開一個代理),以遞歸cralwer上BeautifulSoup工作?

我知道,如果我是用機械化的瀏覽器中添加的代理:

br = Browser() 
br.set_proxies({'http':'http://username:[email protected]:port', 
'https':'https://username:[email protected]:port'}) 

,但我想知道具體是什麼樣的解決方案將BeautifulSoup需要。

非常感謝您的幫助!

回答

0

擡起頭,有一個不太複雜的解決方案,這可現在,共享here看看BeautifulSoup的例子:

import requests 

proxies = {"http": "http://10.10.1.10:3128", 
      "https": "http://10.10.1.10:1080"} 

requests.get("http://example.org", proxies=proxies) 

然後做從請求響應中恢復正常。

所以,如果你想單獨的線程與不同的代理,你可以爲每個請求調用不同的字典條目(例如從一個字典列表)。

當您現有的包使用已經是請求/ bs4時,這似乎更直接實施,因爲它只是在您現有的requests.get()調用中添加的額外**kwargs。您不必爲每個線程初始化/安裝/打開單獨的urllib處理程序。