爬取代理IP,并判断是否可用。
# -*- coding:utf-8 -*-
from gevent import monkey
monkey.patch_all() import urllib2
from gevent.pool import Pool import requests
import re class SpiderProxy:
def __init__(self):
self.headers = {
"Host": "www.xicidaili.com",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:47.0) Gecko/20100101 Firefox/47.0",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.5",
"Accept-Encoding": "gzip, deflate",
"Referer": "http://www.xicidaili.com/nn/",
}
self.url = 'http://www.xicidaili.com/nn/'
self.proxy_list = []
self.re_ip = re.compile(r'(?<![\.\d])(?:\d{1,3}\.){3}\d{1,3}(?![\.\d])')
self.re_port = re.compile(r'<td>(\d+)</td>') def get_pagesource(self):
''' 取得所有1-n页上的代理IP'''
try:
num = int(raw_input('please input 1-'))
for i in range(1, num + 1):
pageurl = self.url + str(i)
req = requests.session()
html = req.get(pageurl, headers=self.headers)
ip_list = self.re_ip.findall(html.text)
port_list = self.re_port.findall(html.text)
proxy_zip = zip(ip_list, port_list)
for i in proxy_zip:
self.proxy_list.append({'http':i[0] + ':' + i[1]})
except ValueError:
print 'please input a num!'
return self.proxy_list class IsActiveProxyIP:
def __init__(self):
self.is_active_proxy_ip = [] def probe_proxy_ip(self, proxy_ip):
proxy = urllib2.ProxyHandler(proxy_ip)
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
try:
html = urllib2.urlopen('http://1212.ip138.com/ic.asp')
if html:
self.is_active_proxy_ip.append(proxy_ip)
return True
else:
return False
except Exception as e:
return False if __name__ == '__main__':
Proxy = SpiderProxy()
proxy_list = Proxy.get_pagesource()
proxy_isactive = IsActiveProxyIP()
pool = Pool(20)
pool.map(proxy_isactive.probe_proxy_ip, proxy_list)
with open(r'E:\python_demo\proxy_ip.txt', 'wb') as f:
for ip in proxy_isactive.is_active_proxy_ip:
ip = str(ip)
f.write(ip[11:-2] + '\n')
print 'file successed written'
爬取代理IP,并判断是否可用。的更多相关文章
- python爬虫爬取代理IP
# #author:wuhao # #--*------------*-- #-****#爬取代理IP并保存到Excel----#爬取当日的代理IP并保存到Excel,目标网站xicidaili.co ...
- 使用Python爬取代理ip
本文主要代码用于有代理网站http://www.kuaidaili.com/free/intr中的代理ip爬取,爬虫使用过程中需要输入含有代理ip的网页链接. 测试ip是否可以用 import tel ...
- 自动爬取代理IP例子
import time import json import datetime import threading import requests from lxml import etree from ...
- python代理池的构建3——爬取代理ip
上篇博客地址:python代理池的构建2--代理ip是否可用的处理和检查 一.基础爬虫模块(Base_spider.py) #-*-coding:utf-8-*- ''' 目标: 实现可以指定不同UR ...
- python 批量爬取代理ip
import urllib.request import re import time import random def getResponse(url): req = urllib.request ...
- 爬取代理IP
现在爬虫好难做啊,有些网站直接封IP,本人小白一个,还没钱,只能找免费的代理IP,于是去爬了西刺免费代理,结果技术值太低,程序还没调试好, IP又被封了... IP又被封了... IP又被封了... ...
- 爬虫爬取代理IP池及代理IP的验证
最近项目内容需要引入代理IP去爬取内容. 为了项目持续运行,需要不断构造.维护.验证代理IP. 为了绕过服务端对IP 和 频率的限制,为了阻止服务端获取真正的主机IP. 一.服务器如何获取客户端IP ...
- 原创:Python爬虫实战之爬取代理ip
编程的快乐只有在运行成功的那一刻才知道QAQ 目标网站:https://www.kuaidaili.com/free/inha/ #若有侵权请联系我 因为上面的代理都是http的所以没写这个判断 代 ...
- Python爬取代理ip
# -*- coding:utf-8 -*- #author : willowj import urllib import urllib2 from bs4 import BeautifulSoup ...
随机推荐
- less css用法思维导图
Less 是一个Css 预编译器,可以扩展Css语言,添加功能如允许变量(variables),混合(mixins),函数(functions) 和许多其他的技术,让你的Css更具维护性,主题性,扩展 ...
- 【Java】Tomcat 5默认的管理员用户和密码
<?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="tomcat&quo ...
- PHP 中获取文件名及路径
1. basename("/mnt/img/image01.jpg")函数:得到文件名;输出结果为:image01.jpg. 使用 basename($uriString) 我们可 ...
- C# 几种数据类型转换方式
1.(int)变量名[强制类型转换] 该转换方式主要用于数字类型之间的转换,从int类型向long,float,double,decimal 类型转换可以使用隐式转换,但从long型到int 就需要使 ...
- contenttype组件、Django缓存机制以及跨域请求
1 昨日回顾 版本控制 *** (1)url=127.0.0.1/course/?version=v100000 1 versioning_class=QueryParameterVersioning ...
- 学习笔记:《JavaScript高级程序设计》
第1章 JavaScript简介 1.一个完整的JavaScript实现应该由三部分组成:核心(ECMAScript),文档对象模型(DOM)和浏览器对象模型(BOM). 2.Web浏览器只是ECMA ...
- 【mysql】mysql 配置
安装完mysql后, 要及得配置一下 /etc/mysql/my.cnf 配置字符编码为utf8 [client] default-character-set = utf8 [mysqld] defa ...
- Cocos2d-x v3.1 GUI系统--环境构建(七)
Cocos2d-x v3.1 GUI系统--环境构建(七) 在使用Cocos2d-x的GUI系统时,由于生成的工程默认是没有将GUI系统所需的库导入到项目的,所以我们必须把库导入到工程中并对工程做一些 ...
- ionic文本颜色
需添加"ion-text"使"color='light'"生效 <div text-center ion-text color="light&q ...
- C# DateTime的时区
C#中可以通过DateTime的Kind属性指定DateTime的时区 DateTimeKind有3个枚举值: Unspecified:未指定为UTC时间或本地时间 Utc: UTC时间 Local: ...