动态ip

>

代理ip软件

>

换ip软件

>

HTTP代理

>
Socks5代理
黑核动态ip代理
您的位置: 首页 > 新闻资讯 > 正文

怎么来爬取代理服务器ip地址

发布时间:2019-06-11 10:10:55 来源:黑核动态ip代理

分享到

  一年前突然有个灵感,想搞个强大的网盘搜索引擎,但由于大学本科学习软件工程偏嵌入式方向,web方面的能力有点弱,不会jsp,不懂html,好久没有玩过sql,但就是趁着年轻人的这股不妥协的劲儿,硬是把以前没有学习的全部给学了一遍,现在感觉web原来也就那么回事。好了,废话就不说了,看到本文的读者,可以先看看我做的东西。

  言归正传,由于我要爬取百度网盘,而度娘你懂的的搞爬虫出生的,反爬虫的能力很牛掰。尤其像我用我的电脑去爬百度网盘,爬几天百度就盯上了我的机子,爬虫开始爬不出东西。之后网上东查,西查,发现可以通过代理来解决这个问题,所以又去爬代理。

  想必看这篇博文的多半是程序猿,所以还是先上代码(我会写注释的,放心,):

#coding:utf-8
import json
import sys
import urllib, urllib2
import datetime
import time
reload(sys)
sys.setdefaultencoding('utf-8') 
from Queue import Queue
from bs4 import BeautifulSoup
import MySQLdb as mdb
DB_HOST = '127.0.0.1'
DB_USER = 'root'
DB_PASS = 'root'
ID=0
ST=1000
uk='3758096603'
classify="inha"
proxy = {u'https':u'118.99.66.106:8080'}
class ProxyServer:
def __init__(self): #这个就不说了,数据库初始化,我用的是mysql
self.dbconn = mdb.connect(DB_HOST, DB_USER, DB_PASS, 'ebook', charset='utf8')
self.dbconn.autocommit(False)
self.next_proxy_set = set()
self.chance=0
self.fail=0
self.count_errno=0
self.dbcurr = self.dbconn.cursor()
self.dbcurr.execute('SET NAMES utf8')
def get_prxy(self,num): #这个函数用来爬取代理
while num>0:
global proxy,ID,uk,classify,ST
count=0
for page in range(1,718): #代理网站总页数,我给了个718页
if self.chance >0: #羊毛出在羊身上,如过爬取网站开始反击我,我就从他那爬下来的
代理伪装,这个self.chance表示我什么时候开始换代理
if ST % 100==0:
self.dbcurr.execute("select count(*) from proxy")
for r in self.dbcurr:
count=r[0]
if ST>count:
ST=1000 #我是从数据库的第1000条开始换的,这段你可以改,搞个随机函数随机换,我写的很简单
self.dbcurr.execute("select * from proxy where ID=%s",(ST))
results = self.dbcurr.fetchall()
for r in results:
protocol=r[1]
ip=r[2]
port=r[3]
pro=(protocol,ip+":"+port)
if pro not in self.next_proxy_set:
self.next_proxy_set.add(pro)
self.chance=0
ST+=1
proxy_support = urllib2.ProxyHandler(proxy) #注册代理
# opener = urllib2.build_opener(proxy_support,urllib2.HTTPHandler(debuglevel=1))
opener = urllib2.build_opener(proxy_support)
urllib2.install_opener(opener)
#添加头信息,模仿浏览器抓取网页,对付返回403禁止访问的问题
# i_headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
i_headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.48'}
#url='http://www.kuaidaili.com/free/inha/' + str(page)
url='http://www.kuaidaili.com/free/'+classify+'/' + str(page)
html_doc=""
try:
req = urllib2.Request(url,headers=i_headers)
response = urllib2.urlopen(req, None,5)
html_doc = response.read() #这不就获取了要爬取的页面嘛?
except Exception as ex: #看抛出异常了,可能开始反击我,我开始换代理
print "ex=",ex
pass
self.chance+=1
if self.chance>0:
if len(self.next_proxy_set)>0:
protocol,socket=self.next_proxy_set.pop()
proxy= {protocol:socket}
print "proxy",proxy
print "change proxy success."
continue
#html_doc = urllib2.urlopen('http://www.xici.net.co/nn/' + str(page)).read()
if html_doc !="": #解析爬取的页面,用的beautifulSoup
soup = BeautifulSoup(html_doc,from_encoding="utf8")
#print "soup",soup
#trs = soup.find('table', id='ip_list').find_all('tr') #获得所有行
trs = ""
try:
trs = soup.find('table').find_all('tr')
except:
print "error"
continue
for tr in trs[1:]:
tds = tr.find_all('td')
ip = tds[0].text.strip() #ip
port = tds[1].text.strip() #端口
protocol = tds[3].text.strip()
#tds = tr.find_all('td')
#ip = tds[2].text.strip()
#port = tds[3].text.strip()
#protocol = tds[6].text.strip()
get_time= tds[6].text.strip()
#get_time = "20"+get_time
check_time = datetime.datetime.strptime(get_time,'%Y-%m-%d %H:%M:%S')
temp = time.time()
x = time.localtime(float(temp))
time_now = time.strftime("%Y-%m-%d %H:%M:%S",x) # get time now,入库时间
http_ip = protocol+'://'+ip+':'+port
if protocol == 'HTTP' or protocol == 'HTTPS': #只要http协议相关代理,其他一律不要
content=""
try: #我就是不放心这个网站,所以爬下来后我又开始检测代理是否真的有效
proxy_support=urllib2.ProxyHandler({protocol:http_ip})
# proxy_support = urllib2.ProxyHandler({'http':'http://124.200.100.50:8080'})
opener = urllib2.build_opener(proxy_support, urllib2.HTTPHandler)
urllib2.install_opener(opener)
if self.count_errno>50:
self.dbcurr.execute("select UID from visited where ID=%s",(ID)) #这是我的数据库,我取了一个叫uk的东东,这个
你不用管,你想检测拿你要爬取的链接检测代理吧
for uid in self.dbcurr:
uk=str(uid[0])
ID+=1
if ID>50000:
ID=0
self.count_errno=0
test_url="http://yun.baidu.com/pcloud/friend/getfanslist?start=0&query_uk="+uk+"&limit=24" #我用来检测的链接
print "download:",http_ip+">>"+uk
req1 = urllib2.Request(test_url,headers=i_headers)
response1 = urllib2.urlopen(req1, None,5)
content = response1.read()
except Exception as ex: #抛异常后的处理
#print "ex2=",ex
pass
self.fail+=1
if self.fail>10:
self.fail=0
break
continue
if content!="": 
json_body = json.loads(content)    
errno = json_body['errno']  
self.count_errno+=1 
if errno!=-55: #检验该代理是有用的,因为content!="" 并且度娘返回not -55
print "success."
self.dbcurr.execute('select ID from proxy where IP=%s', (ip)) #开始入库了
y = self.dbcurr.fetchone()
if not y:
print 'add','%s//:%s:%s' % (protocol, ip, port)
self.dbcurr.execute('INSERT INTO proxy(PROTOCOL,IP,PORT,CHECK_TIME,ACQ_TIME) VALUES(%s,%s,%s,%s,%s)',(protocol,ip,port,check_time,time_now))
self.dbconn.commit()
num-=1
if num % 4 ==0:
classify="intr" #这个是原来网站的那几个标签栏名称,我是一栏一栏的爬取的
if num % 4 ==1:
classify="outha"
if num % 4 ==2:
classify="outtr"
if num % 4 ==3:
classify="inha"
  
  if __name__ == '__main__':
  
  proSer = ProxyServer()
  proSer.get_prxy(10000) #爬10000次,单线程,爬个1两周没有问题

相关资讯

Python爬虫如何使用代理ip绕过网站反爬取机制

Python爬虫如何绕过网站反爬取机制Python爬虫是什么?简单的说,Python爬虫是由计算机自动与服务器交互获取数据的工具。现今互联网世界,基于很多原因,

来源:黑核混拨ip代理

2019-01-18 11:26:56

动态IP代理爬取网站的都是哪些爬虫

动态IP代理爬取网站的都是哪些爬虫?在写爬虫程序的时候,当抓取频率较快或者抓取一些robots.txt禁爬路径,肯定会碰到被网站屏蔽的情况,这时候目标服务器要么

来源:黑核动态ip代理

2019-05-05 09:35:19

python爬虫使用代理池爬取拉勾网招聘信息

本文主要如何使用python爬虫使用代理池爬取拉勾网招聘信息,关键有两点,一,构建代理池解决同一ip访问频繁封ip问题,二,是找到python招聘信息真正的页面

来源:黑核动态ip代理

2019-05-14 09:21:49

如何使用代理服务器爬取网站

有时使用同一个ip去爬取同一个网站上的网页,久了之后会被网站服务器屏蔽。使用代理服务器就可以“瞒天过海,暗渡陈仓”。下文教教大家如何使用代理服务器爬取网站,一起

来源:黑核动态ip代理

2019-05-20 10:39:00

代理IP在数据爬取中的作用与代理IP验证

目前动态ip虽多,提供服务的商家也五花八门,但对于代理IP的使用并不是购买过来就可以随便用了,还需要了解代理IP的作用,数据爬取与IP提取知识,这样可以有针对性

来源:黑核动态ip代理

2019-06-04 09:41:13

怎么来爬取代理服务器ip地址

一年前突然有个灵感,想搞个强大的网盘搜索引擎,但由于大学本科学习软件工程偏嵌入式方向,web方面的能力有点弱,不会jsp,不懂html,好久没有玩过sql,但就

来源:黑核动态ip代理

2019-06-11 10:10:55

使用代理服务器爬取网站

有时使用同一个ip去爬取同一个网站上的网页,久了之后会被网站服务器屏蔽。使用代理服务器就可以“瞒天过海,暗渡陈仓”。使用代理服务器爬取网站具体要怎么操作呢?下面

来源:黑核动态ip代理

2019-06-11 10:14:51

什么是ip代理软件?可以修改ip地址吗?

经常碰到朋友问,代理IP是做啥的,有什么用。我对他一顿解释,然后他还是云里雾里,好吧,可能是我口才不好,这里写文再解释下。代理IP对于很多人来说,用处很大,他们

来源:黑核混拨ip加速器网

2018-12-27 17:27:18

不知道怎么样修改ip地址可以用黑核混拨IP软件

现在做推广越来越难做了,动不动就被封号,要么就是一个IP只能登陆一个账号,这就尴尬了,如果只用一个账号推广根本不见效啊,或者说见效也效果不大,只能大批量的做推广

来源:黑核混拨ip加速器网

2018-12-25 16:28:24

国内好用又实惠的https代理ip服务器不要错过了

随着大数据时代的到来,爬虫已经成了获取数据的必不可少的方式,在使用爬虫多次爬取同一网站时,经常会被网站的IP反爬虫机制给禁掉,为了解决封禁IP的问题,通常会使用

来源:黑核混拨ip加速器网

2018-12-28 16:55:02

还在找ip地址修改器吗?来试试黑核混拨IP加速器吧

国内ip地址修改器顾名思义就是转换自己的IP地址的一个工具或者一款软件,ip地址修改用哪些工具好处呢,因为工作或者个人需求,修改IP后可以注册一些限制IP注册的

来源:黑核混拨ip加速器网

2018-12-25 18:13:13

在线客服
大客户VIP渠道
点击这里给我发消息
讨论QQ群
客服电话
13318873961