0基础学Python之反爬虫利器,搭建HTTP代理~~

日期: 2020-03-18 14:02

大数据时代,随着互联网的普及与高速发展,人们对于网络的依赖也愈加强。大部分人依靠互联网工作和生活,掌握庞大的数据信息显得尤为重要。 而网络爬虫的作用就取决于采集分析这些大数据信息,各领域具有更强的发展趋势。无偿分享Python干货资料,@ 私聊小编领取

当我们对网站进行数据采集的过程中,经常遇到这样的情况,爬着爬着就提示错误,比如403 Forbidden。出现这种问题是因为网站设置了发爬虫,服务器会检测ip的请求次数,抓取频率超出某个阀值,就会被拒绝服务,禁止访问,尤其是一些大型网站。通常,网站会根据IP标识爬虫设置反爬虫策略。除了降低请求频率,减轻服务器压力外,最简单有效的解决方式就是使用HTTP代理IP。

0基础学Python之反爬虫利器,搭建HTTP代理~~
什么是爬虫代理IP

代理IP又称代理服务器(Proxy Server)。代理网络用户去取得网络信息,能起到防火墙的作用。

形象的讲,代理IP是网络信息的中转站。是介于浏览器和Web服务器之间的一台服务器,设置代理服务器后,你的本机先访问代理IP,然后通过代理去访问互联网。这样一来,我们还是能正常浏览网站,但这个过程中Web服务器识别出的真实IP就是我们的代理IP地址。

代理的功能以及作用突破自身访问ip限制

很多网站防止信息抓取,设置了发爬虫机制,通过使用极光代理服务器切换的IP进行操作访问,伪装真实IP地址,从而成功的突破ip限制问题。

降低网络延迟

代理服务器设有缓冲区并有存储记忆功能,当发出请求信息通过时,会由缓冲区取出信息传给用户,极大地提高了访问速度。

高匿安全

隐藏真实的IP,在Python爬虫采集过程中,不断自动更换代理,达到很好的抓取效果。

充当防火墙,增强安全性

设置IP地址过滤,访问时通过代理服务器,限制访问权限,禁止用户对某些网络进行访问,从而起到防火墙的作用。

代理分类

依据代理ip的匿名成都,可分成一下几类

高匿代理:隐藏用户真实的IP地址,将数据包原封不动地转发,访问时对方无法识别出是代理ip。比如具有高质量代理IP的极光HTTP代理普匿代理:隐藏用户真实IP地址,会在数据包上做一些改动,请求信息将会改变,使对方服务器识别出我们用了动态ip代理。代理服务器通常会加入的HTTP头有HTTP_VIA和HTTP_X_FORWARDED_FOR。透明代理:传送的是真实IP地址,但客户端根本不知道代理服务器的存在。这种代理除了能用缓存技术提高浏览速度,能用内容过滤提高安全性之外,并无其他显著作用。


0基础学Python之反爬虫利器,搭建HTTP代理~~
Python爬虫设置代理IP

在学习Python爬虫的时候,经常会遇见所要爬取的网站采取了反爬取技术,高强度、高效率地爬取网页信息常常会给网站服务器带来巨大压力,所以同一个IP反复爬取同一个网页,就很可能被封。这里讲述一个爬虫技巧,设置极光代理IP。

(一)配置环境

•安装requests库

•安装bs4库

•安装lxml库

(二)代码展示

# IP地址取自国内髙匿代理IP网站:http://h.jiguangdaili.com/#

from bs4 import BeautifulSoupimport requestsimport random

def get_ip_list(url, headers):

web_data = requests.get(url, headers=headers)

soup = BeautifulSoup(web_data.text, 'lxml')

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)

return ip_list

def get_random_ip(ip_list):

proxy_list = []

for ip in ip_list:

proxy_list.append('http://' + ip)

proxy_ip = random.choice(proxy_list)

proxies = {'http': proxy_ip}

return proxies

if __name__ == '__main__':

url = 'http://h.jiguangdaili.com/'

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'

}

ip_list = get_ip_list(url, headers=headers)

proxies = get_random_ip(ip_list)

print(proxies)

运行上面的代码会得到一个随机的proxies,把它直接传入requests的get方法中即可。

web_data = requests.get(url, headers=headers, proxies=proxies)

用代理IP不仅可以隐藏自身IP,还可以防止自身IP被封锁。极光HTTP代理拥有海量IP,不仅使用方便快捷,更安全可靠。

0基础学Python之反爬虫利器,搭建HTTP代理~~
无私分享Python干货,@ 私聊小编领取。


0基础学Python之反爬虫利器,搭建HTTP代理~~


相关新闻