以后再也不用担心写爬虫ip被封,不用担心没钱买代理ip的烦恼了 在使用python写爬虫时候,你会遇到所要爬取的网站有反爬取技术比如用同一个IP反复爬取同一个网页,很可能会被封。如何有效的解决这个问题呢?我们可以使用代理ip,来设置代理ip池。 现在教大家一个可获取大量免费有效快速的代理ip方法,我们访问西刺免费代理ip网址 这里面提供了许多代理ip,但是我们尝试过后会发现并不是每一个都是有效的。所以我们现在所要做的就是从里面提供的筛选出有效快速稳定的ip。 以下介绍的免费获取代理ip池的方法: 优点:免费、数量多、有效、速度快 缺点:需要定期筛选 主要思路: 从网址上爬取ip地址并存储 验证ip是否能使用-(随机访问网址判断响应码) 格式化ip地址 代码如下: 1.导入包 import requests from lxml import etree import time 1 2 3 2.获取西刺免费代理ip网址上的代理ip def get_all_proxy(): url = 'http://www.xicidaili.com/nn/1' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36', } response = requests.get(url, headers=headers) html_ele = etree.HTML(response.text) ip_eles = html_ele.xpath('//table[@id="ip_list"]/tr/td[2]/text()') port_ele = html_ele.xpath('//table[@id="ip_list"]/tr/td[3]/text()') proxy_list = [] for i in range(0,len(ip_eles)): proxy_str = 'http://' + ip_eles[i] + ':' + port_ele[i] proxy_list.append(proxy_str) return proxy_list 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3.验证获取的ip def check_all_proxy(proxy_list): valid_proxy_list = [] for proxy in proxy_list: url = 'http://www.baidu.com/' proxy_dict = { 'http': proxy } try: start_time = time.time() response = requests.get(url, proxies=proxy_dict, timeout=5) if response.status_code == 200: end_time = time.time() print('代理可用:' + proxy) print('耗时:' + str(end_time - start_time)) valid_proxy_list.append(proxy) else: print('代理超时') except: print('代理不可用--------------->'+proxy) return valid_proxy_list 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 4.输出获取ip池 if __name__ == '__main__': proxy_list = get_all_proxy() valid_proxy_list = check_all_proxy(proxy_list) print('--'*30) print(valid_proxy_list) 1 2 3 4 5 技术能力有限欢迎提出意见,保证积极向上不断学习 ———————————————— 版权声明:本文为CSDN博主「彬小二」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_39884947/article/details/86609930
上传时间: 2019-11-15
上传用户:fygwz1982
API函数详解winAPI32.chm 表1 SetWindowPos函数的参数解释 参数名 参数含义 hwnd 要移动的窗口的句柄(可以用窗体的hwnd属性) hWndInsertAfter 关于如何在Z轴上放置窗口的标记(具体见表2) x 相当于窗口的Left属性 y 相当于窗口的Top属性 cx 相当于窗口的Right属性 cy 相当于窗口的Bottom属性 wFlags 关于如何移动窗口的标记(具体见表3)
上传时间: 2019-12-01
上传用户:gdqiutao
程佩青的数字信号处理答案,里面包含了DFT,z变换, FFT等的资源的答案,非常经典!
标签: 数字信号处理
上传时间: 2020-02-23
上传用户:hainu_hzh
function y=lagr(x0,y0,x) %x0,y0为节点 %x是插值点 n=length(x0); m=length(x); for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if j~=k p=p*(z-x0(j))/(x0(k)-x0(j)); end end s=p*y0(k)+s; end y(i)=s; end
标签: lagr
上传时间: 2020-06-09
上传用户:shiyc2020
keystone_sinc是用sinc插值法校正距离走动; keystone_czt使用chirp-z变换校正距离走动;
上传时间: 2020-06-17
上传用户:mhao123
正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^\x00-\xff] 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:\n\s*\r 评注:可以用来删除空白行 匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? /> 评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力 匹配首尾空白字符的正则表达式:^\s*|\s*$ 评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式 匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 评注:表单验证时很实用 匹配网址URL的正则表达式:[a-zA-z]+://[^\s]* 评注:网上流传的版本功能很有限,上面这个基本可以满足需求 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 评注:表单验证时很实用 匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7} 评注:匹配形式如 0511-4405222 或 021-87888822 匹配腾讯QQ号:[1-9][0-9]{4,} 评注:腾讯QQ号从10000开始 匹配中国邮政编码:[1-9]\d{5}(?!\d) 评注:中国邮政编码为6位数字 匹配身份证:\d{15}|\d{18} 评注:中国的身份证为15位或18位 匹配ip地址:\d+\.\d+\.\d+\.\d+ 评注:提取ip地址时有用。 匹配特定数字:
上传时间: 2020-12-16
上传用户:
程序下载v知道x'x'c'v'x'c'z'csaC cscxz
标签: 测试v下程序程序
上传时间: 2021-01-04
上传用户:
C++类设计基础教程以及例子源代码。 C Class Design Handbook: Coding Effective Classes by Richard Conway (z-lib.org)_NoRestriction
上传时间: 2021-01-25
上传用户:
TL494 DC-DC应用电路multisim源文件,multisim12以上版本可打开运行.z
上传时间: 2021-11-11
上传用户:bluedrops
DIY制作AT89S52最小系统板,附原理图PCBBOM制作说明
上传时间: 2021-11-22
上传用户:jiabin