python爬蟲簡單的添加代理進行訪問
- 2020 年 1 月 17 日
- 筆記
在使用python對網頁進行多次快速爬取的時候,訪問次數過於頻繁,伺服器不會考慮User-Agent的資訊,會直接把你視為爬蟲,從而過濾掉,拒絕你的訪問,在這種時候就需要設置代理,我們可以給proxies屬性設置一個代理的IP地址,程式碼如下:
1 import requests 2 from lxml import etree 3 url = "https://www.ip.cn" 4 headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 OPR/57.0.3098.116", } 5 pro = { 6 # 'https': 'https://118.122.92.252:37901', #四川省成都市 電信 7 'https': 'https://27.17.45.90:43411', #湖北省武漢市 電信 8 } 9 try: 10 response = requests.get(url, headers=headers, proxies=pro) 11 html_str = response.content.decode() 12 # print(html_str) 13 html = etree.HTML(html_str) 14 message = html.xpath("//div[@class='well']//p/text()") 15 ip = html.xpath("//div[@class='well']//p/code/text()") 16 eng = html.xpath("//div[@class='well']/p/text()") 17 print(message[0]+ip[0]) 18 print(message[1]+ip[1]) 19 print(eng[2]) 20 except requests.exceptions.ProxyError as e: 21 print("當前代理異常") 22 except: 23 print("當前請求異常")
在上面的程式碼中,調用requests庫,對一個IP地址查詢網頁進行訪問,隨後使用lxml庫的xpath對網頁進行分析提取,返回用戶訪問此網頁時自己的IP地址,如果代理設置成功,則會返回你的資訊和IP地址,如下:

如果代理失敗則會返回異常,在程式碼中使用了捕獲異常,則會返回設置的提示資訊,"當前代理異常",如果不是代理的錯誤則是"當前請求異常"

PS:免費的代理不是很穩定,在確認程式碼無誤後,如果仍然返回異常,可嘗試更換代理IP…