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…