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

本文介绍了一种使用Python爬取代理服务器的方法,通过爬虫技术从西刺代理网站获取大量代理IP资源,并验证其有效性。文章提供了完整的代码示例,包括数据库操作、网页请求及解析等关键步骤。

    由于我之前要搞去转盘网(http://www.quzhuanpan.com),为了避免度娘禁爬虫,所以必须要先爬取一定的代理,现在将爬取代理的代码分享给大家。

    数据库的话这里我就不分享了,可以看看sql的插入过程自己建就可以。

    代码:

#coding:utf-8

import json

import urllib, urllib2

import datetime

import time

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=50

uk='3758096603'

classify="nn"


proxy = {u'http':u'222.39.64.13:8118'}


class ProxyServer:

    

    def __init__(self):

        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, 300):

                if self.chance >0:

                    if ST % 100==0:

                        self.dbcurr.execute("select count(*) from proxy")

                        for r in self.dbcurr:

                            count=r[0]

                        if ST>count:

                            ST=50

                    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.xici.net.co/'+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 !="":

                    soup = BeautifulSoup(html_doc)

                    trs = soup.find('table', id='ip_list').find_all('tr') #获得所有行

                    for tr in trs[1:]:

                        tds = tr.find_all('td')

                        ip = tds[2].text.strip()

                        port = tds[3].text.strip()

                        protocol = tds[6].text.strip()

                        get_time= tds[9].text.strip()

                        get_time = "20"+get_time

                        check_time = datetime.datetime.strptime(get_time,'%Y-%m-%d %H:%M')

                        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':

                            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))

                                    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:

                                    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="nt"

            if num % 4 ==1:

                classify="wn"

            if num % 4 ==2:

                classify="wt"

            if num % 4 ==3:

                classify="nn"


if __name__ == '__main__':

    proSer = ProxyServer()

    proSer.get_prxy(10000)

哥还做了几个好用的站,喜欢的朋友也可以指点指点:

http://www.oksousou.com(磁力搜索引擎)

http://www.sosogif.com gif在线制作功能很强大 )

谢谢各位看官。


                


转载于:https://my.oschina.net/u/2303983/blog/668695

标题SpringBoot智能在线预约挂号系统研究AI更换标题第1章引言介绍智能在线预约挂号系统的研究背景、意义、国内外研究现状及论文创新点。1.1研究背景与意义阐述智能在线预约挂号系统对提升医疗服务效率的重要性。1.2国内外研究现状分析国内外智能在线预约挂号系统的研究与应用情况。1.3研究方法及创新点概述本文采用的技术路线、研究方法及主要创新点。第2章相关理论总结智能在线预约挂号系统相关理论,包括系统架构、开发技术等。2.1系统架构设计理论介绍系统架构设计的基本原则和常用方法。2.2SpringBoot开发框架理论阐述SpringBoot框架的特点、优势及其在系统开发中的应用。2.3数据库设计与管理理论介绍数据库设计原则、数据模型及数据库管理系统。2.4网络安全与数据保护理论讨论网络安全威胁、数据保护技术及其在系统中的应用。第3章SpringBoot智能在线预约挂号系统设计详细介绍系统的设计方案,包括功能模块划分、数据库设计等。3.1系统功能模块设计划分系统功能模块,如用户管理、挂号管理、医生排班等。3.2数据库设计与实现设计数据库表结构,确定字段类型、主键及外键关系。3.3用户界面设计设计用户友好的界面,提升用户体验。3.4系统安全设计阐述系统安全策略,包括用户认证、数据加密等。第4章系统实现与测试介绍系统的实现过程,包括编码、测试及优化等。4.1系统编码实现采用SpringBoot框架进行系统编码实现。4.2系统测试方法介绍系统测试的方法、步骤及测试用例设计。4.3系统性能测试与分析对系统进行性能测试,分析测试结果并提出优化建议。4.4系统优化与改进根据测试结果对系统进行优化和改进,提升系统性能。第5章研究结果呈现系统实现后的效果,包括功能实现、性能提升等。5.1系统功能实现效果展示系统各功能模块的实现效果,如挂号成功界面等。5.2系统性能提升效果对比优化前后的系统性能
在金融行业中,对信用风险的判断是核心环节之一,其结果对机构的信贷政策和风险控制策略有直接影响。本文将围绕如何借助机器学习方法,尤其是Sklearn工具包,建立用于判断信用状况的预测系统。文中将涵盖逻辑回归、支持向量机等常见方法,并通过实际操作流程进行说明。 一、机器学习基本概念 机器学习属于人工智能的子领域,其基本理念是通过数据自动学习规律,而非依赖人工设定规则。在信贷分析中,该技术可用于挖掘历史数据中的潜在规律,进而对未来的信用表现进行预测。 二、Sklearn工具包概述 Sklearn(Scikit-learn)是Python语言中广泛使用的机器学习模块,提供多种数据处理和建模功能。它简化了数据清洗、特征提取、模型构建、验证与优化等流程,是数据科学项目中的常用工具。 三、逻辑回归模型 逻辑回归是一种常用于分类任务的线性模型,特别适用于二类问题。在信用评估中,该模型可用于判断借款人是否可能违约。其通过逻辑函数将输出映射为0到1之间的概率值,从而表示违约的可能性。 四、支持向量机模型 支持向量机是一种用于监督学习的算法,适用于数据维度高、样本量小的情况。在信用分析中,该方法能够通过寻找最佳分割面,区分违约与非违约客户。通过选用不同核函数,可应对复杂的非线性关系,提升预测精度。 五、数据预处理步骤 在建模前,需对原始数据进行清理与转换,包括处理缺失值、识别异常点、标准化数值、筛选有效特征等。对于信用评分,常见的输入变量包括收入水平、负债比例、信用历史记录、职业稳定性等。预处理有助于减少噪声干扰,增强模型的适应性。 六、模型构建与验证 借助Sklearn,可以将数据集划分为训练集和测试集,并通过交叉验证调整参数以提升模型性能。常用评估指标包括准确率、召回率、F1值以及AUC-ROC曲线。在处理不平衡数据时,更应关注模型的召回率与特异性。 七、集成学习方法 为提升模型预测能力,可采用集成策略,如结合多个模型的预测结果。这有助于降低单一模型的偏差与方差,增强整体预测的稳定性与准确性。 综上,基于机器学习的信用评估系统可通过Sklearn中的多种算法,结合合理的数据处理与模型优化,实现对借款人信用状况的精准判断。在实际应用中,需持续调整模型以适应市场变化,保障预测结果的长期有效性。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
### 获取可用于配置的国外代理服务器IP地址列表 为了获取并验证可用的国外代理服务器 IP 地址,可以采用如下方法: #### 方法一:通过在线代理服务提供商 许多第三方服务商提供免费或付费的代理服务。这些平台通常会维护最新的代理池,并定期更新有效的代理 IP 列表。 例如 FreeProxyList、SpysOne 或者 ProxyNova 等网站提供了大量的公开代理资源[^1]。不过需要注意的是,在使用这类公共代理时可能存在安全性和稳定性方面的问题,因此建议优先考虑信誉良好的商业代理供应商。 #### 方法二:编写脚本自动抓取和测试 如果希望更灵活地控制所使用的代理源,则可以通过编程方式来实现自动化收集与检测过程。下面是一个简单的 Python 脚本示例,用于从特定网页上爬取 HTTP/HTTPS 类型的匿名程度较高的代理数据,并对其进行简单连通性测试: ```python import requests from bs4 import BeautifulSoup def fetch_proxies(): url = 'https://www.example-proxy-site.com' # 替换成实际的目标站点链接 response = requests.get(url) soup = BeautifulSoup(response.text, "html.parser") proxies = [] table = soup.find('table', attrs={'class': 'proxy-table'}) rows = table.tbody.find_all('tr') for row in rows: columns = row.find_all('td') ip = columns[0].text.strip() port = columns[1].text.strip() proxy_type = columns[3].text.lower().strip() # 只保留http(s)类型的代理 if proxy_type.startswith(('http', 'https')): full_proxy = f"{proxy_type}://{ip}:{port}" proxies.append(full_proxy) return proxies def test_proxy(proxy): try: resp = requests.get( 'http://example.com', proxies={"http": proxy, "https": proxy}, timeout=5, ) status_code = resp.status_code success = (status_code >= 200 and status_code < 300) return {'success': success, 'code': status_code} except Exception as e: return {'success': False} proxies_list = fetch_proxies() for p in proxies_list[:10]: # 测试前十个代理 result = test_proxy(p) print(f'Testing {p}: {"Success" if result["success"] else "Failed"} ({result["code"]})') ``` 此代码片段展示了如何利用 `requests` 和 `BeautifulSoup` 库解析 HTML 页面中的表格结构以提取代理信息,并尝试连接到指定目标 URL 来检验其有效性。请注意修改其中的目标网址部分以便适应不同的代理列表页面布局特点[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值