爬取代理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 ...
随机推荐
- spring boot之 Bean的初始化和销毁(4)
原文:https://blog.csdn.net/z3133464733/article/details/79189699 -------------------------------------- ...
- Android的网络通信
Android平台有三种网络接口可以使用,他们分别是:java.net.*(标准Java接口).Org.apache接口和Android.net.*(Android网络接口).大多数的Android应 ...
- Jetty项目解压目录设置
Ubuntu14.04 没有在Jetty的根目录下建立work文件夹时,Jetty会默认将项目解压到/var/cache/jetty/data/下,如果在Jetty的根目录下建立work文件夹,jet ...
- 禁用thinkpad触摸板的方法
控制面板----硬件和声音----设备和打印机----鼠标----ThinkPad------开启触摸板(前面的勾勾去掉)
- Tree and Queries CodeForces - 375D 树上莫队
http://codeforces.com/problemset/problem/375/D 树莫队就是把树用dfs序变成线性的数组. (原数组要根据dfs的顺序来变化) 然后和莫队一样的区间询问. ...
- U盘安装Ubuntu15.04 出现boot failed: please change disks and press a key to continue
1.根据国内的教程,用Ultraiso制作了一个Ubuntu15.04的U盘启动盘,在装系统的时候提示如下错误:boot failed: please change disks and press a ...
- 使用WinSCP上传文件到linux系统
1.安装WinSCP 2.新建脚本test.txt option confirm off open username:password@host put C:\test\a.zip /home/tes ...
- Unity C# 反射
什么是反射 在.NET中的反射也可以实现从对象的外部来了解对象(或程序集)内部结构的功能,哪怕你不知道这个对象(或程序集)是个什么东西,另外.NET中的反射还可以运态创建出对象并执行它其中的方法. 反 ...
- Xcode8-beat升级需谨慎
Xcode8-beat版本在打开xib文件的时候,出现了如下的弹窗 在这里要选择Cancel,选择Choose后xib文件的verson会改变,那么Xcode7就没法打开了(坑队友啦), 更没法运行 ...
- iOS开发ReactiveCocoa学习笔记(四)
ReactiveCocoa常见操作方法介绍: demo地址:https://github.com/SummerHH/ReactiveCocoa.git 1.1 ReactiveCocoa操作须知 所有 ...