如何用海外HTTP代理設定python爬蟲代理ip池?
很多新手爬蟲都有過這樣的經歷,自己的爬蟲程式一點問題沒有,卻總是抓取不到資訊或抓取了錯誤資訊、亂碼,甚至請求被拒絕,這是因為反爬程式對我們的訪問IP做出了各種限制的原因,使用代理ip軟體能夠很大程度上解決反爬蟲程式的限制問題,特別是ip的限制情況就會少很多,資料抓取的成功機率也會大大提升。
那麼我們該如何利用IP代理搭建爬蟲呢?
我們在建立爬蟲ip代理的時候主要是以下關鍵步驟組建
1、從代理ip網站爬取IP地址及埠號並儲存
2、驗證ip是否能用
3、格式化ip地址
4、在requests中使用代理ip爬取網站
值得注意的是在Requests中使用代理爬取的格式是
import requests
requests.get(url, headers=headers,proxies=proxies)
其中proxies是一個字典其格式為:
對每個ip都有
proxies = {
http: ' '
https: ' https:// 114.99.7.122:8752 '
}
注意:
對於http和https兩個元素,這裡的http和https
代表的不是代理網站上在ip後面接的型別
代表的是requests訪問的網站的傳輸型別是http還是https
你爬的網站是http型別的你就用http,如果是https型別的你就用https,在代理網站上爬的時候也要分別爬http或https的ip。
下面我們直接上程式碼
1:配置環境、匯入包
# IP地址取自國內髙匿代理IP網站:smartproxy
# 僅僅爬取首頁IP地址就足夠一般使用
from bs4 import BeautifulSoup import requests import random headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.194.139.179 Safari/537.36'}
2:獲取網頁內容函式
def getHTMLText(url,proxies): try: r = requests.get(url,proxies=proxies) r.raise_for_status() r.encoding = r.apparent_encoding except: return 0 else: return r.text
3:從海外HTTP代理網站獲取代理IP列表函式,並檢測可用性
def get_ip_list(url): web_data = requests.get(url,headers) soup = BeautifulSoup(web_data.text, 'html') ips = soup.find_all('tr') ip_list = [] for i in range(1, len(ips)): ip_info = ips[i] tds = ip_info.find_all('td') ip_list.append(tds[1].text + ':' + tds[2].text)
#檢測ip可用性,移除不可用ip:(這裡其實總會出問題,你移除的ip可能只是暫時不能用,剩下的ip使用一次後可能之後也未必能用)
for ip in ip_list: try: proxy_host = " proxy_temp = {"https": proxy_host} res = urllib.urlopen(url, proxies=proxy_temp).read() except Exception as e: ip_list.remove(ip) continue return ip_list
4:從代理IP池中隨機獲取IP列表
def get_random_ip(ip_list): proxy_list = [] for ip in ip_list: proxy_list.append(') proxy_ip = random.choice(proxy_list) proxies = {'http': proxy_ip} return proxies
5:呼叫IP代理
if __name__ == '__main__': url = ' ip_list = get_ip_list(url) proxies = get_random_ip(ip_list) print(proxies)
當然使用了代理IP,也不代表可以肆無忌憚的抓取資料,首先違法的事情我們堅決不能幹,使用了代理IP,也要儘可能的遵守反爬蟲規則,減少抓取頻率,避免給對方伺服器造成太大的壓力而打不開。
最後提一下我文中用到的IP代理商,Smartproxy是海外HTTP代理伺服器提供商,IP可以精準定位城市級,每個月都會更新IP池,一手IP,服務於大資料採集領域幫助企業/個人快速高效獲取資料來源,真的非常便宜實惠,而已速度快又很穩定。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70021123/viewspace-2912631/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python爬蟲技巧---設定代理IPPython爬蟲
- 如何用http代理的ip池繞過網站反爬蟲機制?HTTP網站爬蟲
- 如何建立爬蟲代理ip池爬蟲
- 爬蟲如何使用ip代理池爬蟲
- Python 爬蟲IP代理池的實現Python爬蟲
- python 爬蟲 代理池Python爬蟲
- Python爬蟲代理池Python爬蟲
- 代理ip池對爬蟲有多重要爬蟲
- 快速構建Python爬蟲IP代理池服務Python爬蟲
- Python代理IP的使用和代理池的設定Python
- selenium+python設定爬蟲代理IP的方法Python爬蟲
- 使用海外HTTP代理爬蟲時,我們該如何快速切換IP?HTTP爬蟲
- scrapy爬蟲代理池爬蟲
- 如何用海外HTTP代理在電腦瀏覽器中設定ip地址和埠?HTTP瀏覽器
- 詳解HTTP代理與SOCKS代理 海外代理IP介紹HTTP
- Python爬蟲怎麼設定動態IP代理,Python爬蟲要注意哪些事項?Python爬蟲
- 如何測試該海外HTTP代理適合爬蟲使用?HTTP爬蟲
- 手把手教你爬蟲代理ip池的建立爬蟲
- 代理ip池對爬蟲有什麼好處爬蟲
- 用Python爬蟲抓取代理IPPython爬蟲
- python爬蟲實戰:爬取西刺代理的代理ip(二)Python爬蟲
- 爬蟲動態http代理ip有什麼功能爬蟲HTTP
- Mac怎麼設定代理IP,蘋果系統設定http代理ip教程Mac蘋果HTTP
- 爬蟲之代理池維護爬蟲
- 構建一個給爬蟲使用的代理IP池爬蟲
- 【PhpSelenium】3.定時爬蟲 + 多工爬蟲 + 代理池PHP爬蟲
- [PhpSelenium] 3.定時爬蟲 + 多工爬蟲 + 代理池PHP爬蟲
- Python代理IP爬蟲的簡單使用Python爬蟲
- 爬蟲如何運用 http 代理爬蟲HTTP
- 海外HTTP代理如何呼叫API介面提取代理IP使用?HTTPAPI
- 使用python爬蟲時如何防止被封?海外HTTP代理如何挑選購買?Python爬蟲HTTP
- 爬蟲使用代理防封IP爬蟲
- 代理IP如何突破反爬蟲?爬蟲
- 爬蟲代理怎麼選ip爬蟲
- 爬蟲代理IP的使用技巧爬蟲
- python爬蟲利用requests製作代理池sPython爬蟲
- 如何使用海外HTTP代理訪問外網?如何設定海外HTTP代理?HTTP
- 爬蟲HTTP代理有推薦的嗎?芝麻代理豌豆代理熊貓代理訊代理?爬蟲HTTP