突破IP的封锁爬取海量数据(python爬取新数据的正确方法)

今天带大家使用爬虫来获取免费的ip。

1. 打开网站首页,可以看到总共有十页数据,总共100条ip记录。咱们的目的很简单,就是要这100条ip和对应端口号。完了我们再去筛选那些ip是可用的。

python爬取新数据的正确方法(突破IP的封锁爬取海量数据)(1)

http://www.ip3366.net/?stype=1&page=1

2. 我们打开浏览器模式模式分析页面看到这些ip信息都位于tr标签内,所以我么可以使用xpath来获取这些信息。

python爬取新数据的正确方法(突破IP的封锁爬取海量数据)(2)

#获取当前页面10个ip数据 ips = selector.xpath('//*[@id="list"]/table/tbody/tr') print(len(ips)) ''' 10 '''

3. 获取到当前页面所有ip信息之后我们就可以使用for循环获取tr标签内部具体的ip和端口号。

# 获取端口和IP for ip in ips: ip_num = ip.xpath('td[1]/text()').get() # ip port_num = ip.xpath('td[2]/text()').get() # port print(ip_num port_num) ''' 49.70.151.180 3256 49.87.44.221 9999 42.177.142.239 9999 42.177.141.141 9999 42.176.134.43 9999 42.176.134.212 9999 49.71.142.114 9999 49.87.221.46 9999 49.87.221.120 9999 49.87.221.61 9999 '''

4. 接下来就使用for循环获取十个页面的100条数据。

for page in range(1 10 1): print(f'-------正在爬取第{page}页数据-------') url = f'http://www.ip3366.net/?stype=1&page={page}'

python爬取新数据的正确方法(突破IP的封锁爬取海量数据)(3)

5. 测试可用性,现在所有的ip都已经获取到了,能不能用还是未知数,所以我们试着有这些ip登陆一下百度页面,检测其可用性。

for ip in ip_list: try: response = requests.get(url='https://www.baidu.com' proxies=ip timeout=2) if response.status_code == 200: use_proxy.append(ip) except Exception as e: print(f'当前为第{count}个代理ip:' ip '请求超时 检测不合格!!!') else: print(f'当前为第{count}个代理ip:' ip '检测通过')

检测结果如下:

python爬取新数据的正确方法(突破IP的封锁爬取海量数据)(4)

因为这些代理每小时都在更新,所以没事多跑两遍程序,总会获取到你想的ip的。

私信【multip】获取源码!

〖特别声明〗:本文内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。如有侵犯您的原创版权或者图片、等版权权利请告知 wzz#tom.com,我们将尽快删除相关内容。

赞 ()
打赏 微信扫一扫 微信扫一扫

相关推荐