python爬虫自动更换ip_python爬虫:自动投票代码(自动爬取代理IP)
#!/usr/bin/env python#coding=utf-8#戴儒锋#http://www.linuxyw.com
importreimportrandomimportsysimporttimeimportdatetimeimportthreadingfrom random importchoiceimportrequestsimportbs4defget_ip():"""获取代理IP"""url= "http://www.xicidaili.com/nn"headers= { "Accept":"text/html,application/xhtml+xml,application/xml;","Accept-Encoding":"gzip, deflate, sdch","Accept-Language":"zh-CN,zh;q=0.8,en;q=0.6","Referer":"http://www.xicidaili.com","User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36"}
r= requests.get(url,headers=headers)
soup= bs4.BeautifulSoup(r.text, 'html.parser')
data= soup.table.find_all("td")
ip_compile= re.compile(r'
(\d+\.\d+\.\d+\.\d+)') #匹配IP
port_compile = re.compile(r'
(\d+)') #匹配端口
ip = re.findall(ip_compile,str(data)) #获取所有IP
port = re.findall(port_compile,str(data)) #获取所有端口
return [":".join(i) for i in zip(ip,port)] #组合IP+端口,如:115.112.88.23:8080#设置 user-agent列表,每次请求时,可在此列表中随机挑选一个user-agnet
uas =["Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:17.0; Baiduspider-ads) Gecko/17.0 Firefox/17.0","Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9b4) Gecko/2008030317 Firefox/3.0b4","Mozilla/5.0 (Windows; U; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; BIDUBrowser 7.6)","Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko","Mozilla/5.0 (Windows NT 6.3; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0","Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.99 Safari/537.36","Mozilla/5.0 (Windows NT 6.3; Win64; x64; Trident/7.0; Touch; LCJB; rv:11.0) like Gecko",
]def get_url(code=0,ips=[]):"""投票
如果因为代理IP不可用造成投票失败,则会自动换一个代理IP后继续投"""
try:
ip=choice(ips)except:returnFalseelse:
proxies={"http":ip,
}
headers2= { "Accept":"text/html,application/xhtml+xml,application/xml;","Accept-Encoding":"gzip, deflate, sdch","Accept-Language":"zh-CN,zh;q=0.8,en;q=0.6","Referer":"","User-Agent":choice(uas),
}try:
num= random.uniform(0,1)
hz_url= "http://www.xxxxx.com/xxxx%s" % num #某投票网站的地址,这里不用真实的域名
hz_r = requests.get(hz_url,headers=headers2,proxies=proxies)exceptrequests.exceptions.ConnectionError:print "ConnectionError"
if notips:print "not ip"sys.exit()#删除不可用的代理IP
if ip inips:
ips.remove(ip)#重新请求URL
get_url(code,ips)else:
date= datetime.datetime.now().strftime('%H:%M:%S')print u"第%s次 [%s] [%s]:投票%s (剩余可用代理IP数:%s)" %(code,date,ip,hz_r.text,len(ips))
ips=[]for i in xrange(6000):#每隔1000次重新获取一次最新的代理IP,每次可获取最新的100个代理IP
if i % 1000 ==0:
ips.extend(get_ip())#启用线程,隔1秒产生一个线程,可控制时间加快投票速度 ,time.sleep的最小单位是毫秒
t1 = threading.Thread(target=get_url,args=(i,ips))
t1.start()
time.sleep(1)
python爬虫自动更换ip_python爬虫:自动投票代码(自动爬取代理IP)相关推荐
- 【实用工具系列之爬虫】python实现爬取代理IP(防 ‘反爬虫’)
系列 [实用工具系列之爬虫]python实现爬取代理IP(防 '反爬虫') [实用工具系列之爬虫]python实现快速爬取财经资讯(防 '反爬虫') 本文使用python实现代理IP的爬取,并可以防' ...
- python爬取国内代理ip_Python语言爬取代理IP
本文主要向大家介绍了Python语言爬取代理IP,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. #!/usr/bin/env python #-*-coding=utf-8 -* ...
- python爬取代理IP并进行有效的IP测试
爬取代理IP及测试是否可用 很多人在爬虫时为了防止被封IP,所以就会去各大网站上查找免费的代理IP,由于不是每个IP地址都是有效的,如果要进去一个一个比对的话效率太低了,我也遇到了这种情况,所以就直接 ...
- 记一次用Python爬取代理IP并使用(尝试用代理IP制造直播房间访问量)
前言 首先说一下代理IP的用法途(代码中会有涉及):代理IP可以用来隐藏你的真实IP,你访问网站是通过代理服务器来做一个中转,所以目标服务器只能看到代理服务器的IP地址,这样就可以让你的IP地址实现隐 ...
- Python爬虫简单运用爬取代理IP
功能1: 爬取西拉ip代理官网上的代理ip 环境:python3.8+pycharm 库:requests,lxml 浏览器:谷歌 IP地址:http://www.xiladaili.com/gaon ...
- Python爬取代理IP
在一些网页的内容爬取过程中,有时候在单位时间内如果我们发送的请求次数过多,网站就可能会封掉我们的IP地址,这时候为了保证我们的爬虫的正常运行,我们就要使用代理IP. 下面来介绍如何构建自己的IP池. ...
- python爬虫自动更换ip_Python 爬虫使用动态切换ip防止封杀
对于爬虫被封禁 ! 爬虫一般来说只要你的ip够多,是不容易被封的. 一些中小网站要封杀你,他的技术成本也是很高的,因为大多数网站没有vps,他们用的是虚拟空间或者是sae,bae这样的paas云. 其 ...
- 用Python爬虫抓取代理IP
不知道大家在访问网站的时候有没有遇到过这样的状况就是被访问的网站会给出一个提示,提示的显示是"访问频率太高",如果在想进行访问那么必须要等一会或者是对方会给出一个验证码使用验证码对 ...
- Python爬虫新手入门教学(十五):爬取网站音乐素材
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...
- python 代理ip验证_python爬虫成长之路(二):抓取代理IP并多线程验证
上回说到,突破反爬虫限制的方法之一就是多用几个代理IP,但前提是我们得拥有有效的代理IP,下面我们来介绍抓取代理IP并多线程快速验证其有效性的过程. 一.抓取代理IP 提供免费代理IP的网站还挺多的, ...
最新文章
- 广度深度都要,亚马逊是如何推动 Alexa 内生成长的?
- SecureCRT 端口转发连接服务器
- Linux动态链接库的使用
- c malloc 头文件_C语言提高篇_malloc,realloc和calloc的区别
- OpenCV与gcc和CMake一起使用
- 怎么博客圆的文章越来越杂?
- sql server分页_SQL Server中的分页简介
- sketchup ruby编程之绘制梯段
- spring hibernate druid mysql_使用Spring4的JavaConfig整合Druid Hibernate4.3
- 如何裁剪、合并视频?
- mvn package时,报错A required class is missing: com/thoughtworks/xstream/io/HierarchicalStreamDriver...
- Vensim建模--基于系统动力学的私人小汽车出行特征建模分析
- 现代电视原理期末复习
- 推荐FPGA入门书籍
- 有赞 WEB-UI 自动化实践
- 阿里云注册域名,购买云服务器,备案,域名解析教程
- 学习编程需要什么基础
- 制作openstack镜像win7.qcow2(centos/ubuntu/win镜像分享)
- bzoj 1034 伪田忌赛马
- 【原来python还可以这么玩】python逆向爬取网易云评论进行情感分析