現在爬蟲越來越難了,一些網站會有相應的反爬蟲措施,例如很多網站會檢測某一段時間某個IP的通路次數,如果通路頻率太快以至于看起來不像正常訪客,它可能就會會禁止這個IP的通路。
是以我們需要設定一些代理伺服器,每隔一段時間換一個代理,就算IP被禁止,依然可以換個IP繼續爬取。
網上有很多網站提供免費代理,但是經過測試基本都不可用,是以就付費買代理IP吧。目前市面有飛蟻代理,代理雲,西瓜代理等。下面就介紹一下飛蟻代理使用情況。
1、首先注冊一個使用者,注冊過程會送50元,可以下單測試。
2、下單如下:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SYmFGNwEjZ1M2YwYmY2ADNzQGO0kTY3MzY4ATYxIWOm9CXxEzLchDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL1M3Lc9CX6MHc0RHaiojIsJye.png)
這個測試期間有個效期,過期失效,據客服講,正式的期限都比較長,直到用完為止,
3、生成API連結
4、測試代碼
擷取代理
#擷取代理IP
def getProxyIPs(self,num=1):
'''
擷取代理IP
:param num: 擷取的代理IP的個數
:return:
'''
proxy_ip=''
try:
url = 'http://182.129.244.16:88/open?user_name=53543×tamp=1551166598&' \
'md5=0ADAF27E30AFD0DD52D7B44F3A5C145F&pattern=json&number=%d' % num
response = request.urlopen(url)
page = response.read()
txt = str(page.decode('utf-8'))
dataDict = json.loads(txt)
print(dataDict)
ports = dataDict.get('port')
# domain = dataDict.get('domain')
for port in ports:
proxy_ip = {'http': "http://" + self.proxy_server + ':' + str(port),
'https': 'https://' + self.proxy_server + ':' + str(port), }
except Exception as ex:
print(ex)
return proxy_ip
利用擷取代理抓取資料
def testproxy(self,url, proxy_IP):
try:
cookie1 = random.choice(self.mycookies)
UserAgent = random.choice(self.user_agent_list)
header = {'User-Agent': UserAgent}
# proxies=proxy_IP ,
txt = requests.get(url,proxies=proxy_IP ,cookies=cookie1, headers=header).text
print(txt)
except Exception as ex:
print(ex)
另外為chrome設定代理IP,以Chrome浏覽器為例
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
proxy = '181.121.214.16:14140'
chrome_options.add_argument('--proxy-server=' + proxy)
driver = webdriver.Chrome(chrome_options=chrome_options)
driver = webdriver.PhantomJS(service_args = [
'--proxy=183.129.244.16:11310',
'--proxy-type=http',
'--load-images=false'
])