维护爬虫代理IP池--采集并验证
任务分析
数据采集现在已经成为了基本操作了,所以大家直接看代码就可以了,注释应该写的很清楚了。如果是个新手,那么可以看这篇文章:采集wordpress并自动发布文章,这篇文章看懂了,基本上全世界大部分的网站你就都能爬了。
这个站点http://ipcheck.chinahosting.tk/是我个人搭建的用来验证IP的,详情见文章:利用虚拟主机搭建一个验证爬虫代理IP是否有效的服务,大家如果自己用的话最好搭建一个,基本上10多分钟就能搭建完,并且只要点点鼠标。
代码实现
#首先,导入必要的包
import gevent.monkey
gevent.monkey.patch_socket()
import gevent
import requests
import time
from fake_useragent import UserAgent
from lxml import etree
from bs4 import BeautifulSoup
import sys
reload(sys)
sys.setdefaultencoding('utf8') #定义GetProxy类
class GetProxy():
#初始化一些参数
def __init__(self):
self.ua = UserAgent()
self.check_url = 'http://ipcheck.chinahosting.tk/'
self.threads = []
self.count = 0 #定义download_page函数,用来请求一个url并且返回返回值
def download_page(self, url):
headers = {"User-Agent":self.ua.random}
response = requests.get(url)
print response.status_code
return response.content #对页面进行数据清理
def crawl_kuaidaili(self):
for page in xrange(1,50):
url = 'https://www.kuaidaili.com/free/inha/' + str(page)
response = self.download_page(url)
soup = BeautifulSoup(response, "html.parser")
all_tr = soup.find_all('tr')
for tr in all_tr:
ip = tr.find('td',attrs={"data-title":"IP"})
port = tr.find('td',attrs={"data-title":"PORT"})
if ip==None or port==None:
pass
else:
#print "http://"+ip.get_text()+":"+port.get_text()
self.threads.append(gevent.spawn(self.valid_check, [ip.get_text(), port.get_text()]))
#print "add a task"
time.sleep(1) #验证爬虫的有效性
def valid_check(self, *arg):
ip = arg[0][0]
port = arg[0][5]
proxyip = "http://"+ip+":"+port
proxy={"http":proxyip}
try:
response = requests.get(self.check_url, proxies=proxy, timeout=5)
#print response.content
if str(response.content) == ip:
print ip
self.count = self.count + 1
else:
pass
except:
pass #启动爬虫
def start(self):
self.crawl_kuaidaili()
gevent.joinall(self.threads)
维护爬虫代理IP池--采集并验证的更多相关文章
- 【python3】如何建立爬虫代理ip池
一.为什么需要建立爬虫代理ip池 在众多的网站防爬措施中,有一种是根据ip的访问频率进行限制的,在某段时间内,当某个ip的访问量达到一定的阀值时,该ip会被拉黑.在一段时间内被禁止访问. 这种时候,可 ...
- 建立爬虫代理IP池
单线程构建爬虫代理IP池 #!/usr/bin/python3.5 # -*- coding:utf-8 -*- import time import tempfile from lxml impor ...
- Python爬虫代理IP池
目录[-] 1.问题 2.代理池设计 3.代码模块 4.安装 5.使用 6.最后 在公司做分布式深网爬虫,搭建了一套稳定的代理池服务,为上千个爬虫提供有效的代理,保证各个爬虫拿到的都是对应网站有效的代 ...
- 可能是一份没什么用的爬虫代理IP指南
写在前面 做爬虫的小伙伴一般都绕不过代理IP这个问题. PS:如果还没遇到被封IP的场景,要不就是你量太小人家懒得理你,要不就是人家压根不在乎... 爬虫用户自己是没有能力维护一系列的代理服务器和代理 ...
- 利用代理IP池(proxy pool)搭建免费ip代理和api
先看这里!!!---->转载:Python爬虫代理IP池(proxy pool) WIIN10安装中遇到的问题: 一.先安装Microsoft Visual C++ Compiler for P ...
- 构建一个给爬虫使用的代理IP池
做网络爬虫时,一般对代理IP的需求量比较大.因为在爬取网站信息的过程中,很多网站做了反爬虫策略,可能会对每个IP做频次控制.这样我们在爬取网站时就需要很多代理IP. 代理IP的获取,可以从以下几个途径 ...
- 爬虫入门到放弃系列05:从程序模块设计到代理IP池
前言 上篇文章吧啦吧啦讲了一些有的没的,现在还是回到主题写点技术相关的.本篇文章作为基础爬虫知识的最后一篇,将以爬虫程序的模块设计来完结. 在我漫(liang)长(nian)的爬虫开发生涯中,我通常将 ...
- 基于后端和爬虫创建的代理ip池
搭建免费的代理ip池 需要解决的问题: 使用什么方式存储ip 文件存储 缺点: 打开文件修改文件操作较麻烦 mysql 缺点: 查询速度较慢 mongodb 缺点: 查询速度较慢. 没有查重功能 re ...
- python爬虫构建代理ip池抓取数据库的示例代码
爬虫的小伙伴,肯定经常遇到ip被封的情况,而现在网络上的代理ip免费的已经很难找了,那么现在就用python的requests库从爬取代理ip,创建一个ip代理池,以备使用. 本代码包括ip的爬取,检 ...
随机推荐
- windows一键部署java项目
windows一键部署java项目 因为公司需求,要在windows的环境上做一键部署启动java项目,同时还要支持从安装界面动态修改配置文件的IP地址.就像安装软件一样将jdk,tomcat,mys ...
- Python高级笔记(三) -- 私有化
1. 类型1 2. 多模块开发 2.1 import 2.2 from xxx import MyName 区分 import xxx ==> xxx.MyName 可以修改 from xxx ...
- 阿里云ACA主要内容
阿里云 ACA,云计算助理工程师,是阿里云使用的一个入门级别课程.内容比较浅显,但都很很有意思的知识.课程的内容主要有7门,具体见下图: 课程的学习方式是视频+实验 先学习视频 再实际操作.阿里云为每 ...
- Swagger UI及 Swagger editor教程 API文档搭配 Node使用
swagger ui 是一个在线文档生成和测试的利器,目前发现最好用的.为啥好用呢?打开 demo,支持API自动生成同步的在线文档些文档可用于项目内部API审核方便测试人员了解 API这些文档可作为 ...
- Date Structure01-绪论作业
一.作业题目 仿照三元组或复数的抽象数据类型写出有理数抽象数据类型的描述 (有理数是其分子.分母均为整数且分母不为零的分数). 有理数基本运算:1.构造有理数T,元素e1,e2分别被赋以分子.分母值2 ...
- [Jetty] Debugging With Eclipse
There are a number of options available to debug your application in Eclipse. If not done already pr ...
- git命令之git mergetool vi非正常退出.swp删除不了的问题
1.git pull命令产生无法merge的错误 使用了 git mergetool命令然后...傻逼了 进入了vi操作界面,不会操作,非正常退出... 然后就产生了.swp相关文件,死活删除不 ...
- 查询SQL Server执行过的SQL语句
SELECT TOP 1000 ST.text AS '执行的SQL语句', QS.execution_count AS '执行次数', QS.total_ ...
- 阿里云服务器ftp连接后21端口无法使用的问题
今天在阿里云Centos上搭了一个ftp 服务,开启了20和21端口的权限.但是用工具和ftp命令登录,均超时. ftp命令登录成功后不能使用ls 命令,直接超时. 工具登录成功后 获取根目录失败,也 ...
- Pytorch学习笔记(一)---- 基础语法
书上内容太多太杂,看完容易忘记,特此记录方便日后查看,所有基础语法以代码形式呈现,代码和注释均来源与书本和案例的整理. # -*- coding: utf-8 -*- # All codes and ...