-
使用爬虫爬取网站的数据时,在短时间内对网站发起高频请求,可能会被该网站禁用ip,这时候可以使用不同的代理服务器来进行请求。
-
代理类型:
一般根据访问的页面类型分为两种:- http
- https
-
代理匿名度:
- 透明:使用代理,服务端可以获得本机ip,知道本地ip使用代理进行访问 - 匿名:使用代理,服务端无法获得本机ip,但是知道访问页面的是代理 - 高匿:使用代理,服务端无法分辨是否使用了代理
-
代理的使用
# 进行代理池的封装,代理服务器在ip代理网站获取
# 本代码的代理ip通过ip代理精灵获得
ips = []
# 含有所有代理的网页
ip_url = 'http://t.ipjldl.com/index.php/api/entry?method=proxyServer.generate_api_url&packid=1&fa=0&fetch_key=&groupid=0&qty=50&time=1&pro=&city=&port=1&format=html&ss=5&css=&dt=1&specialTxt=3&specialJson=&usertype=2'
# 将代理爬取下来
page_text = requests.get(url=ip_url,headers=headers).text
tree = etree.HTML(page_text)
ip_list = tree.xpath('//body//text()')
for ip in ip_list:
dic = {'https':ip}
ips.append(dic)
url = 'https://www.kuaidaili.com/free/inha/%d/'
all_data = []
for page in range(2,10):
print('爬取的是第%d'%page)
new_url = format(url%page)
# proxies 就是代理的形参 格式为{'https':"代理"}
page_text = requests.get(new_url,headers=headers,proxies=random.choice(ips)).text
tree = etree.HTML(page_text)
#注意:在xpath表达式中不可以出现tbody标签
ip_list = tree.xpath('//*[@id="list"]/table//tr/td[1]/text()')
all_data.append(ip_list)
print(len(all_data))