python自动获取代理列表并通过代理爬取网站

本脚本实现了如下功能:

1:自动从某代理网站 获取最新的可用代理信息:IP地址,端口,协议类型(网站对每分钟的调用此书做了限制)

2:自动填充代理信息并进行抓去网站信息

注意:X

 

 代码如下 复制代码

# -*- coding: utf8 -*-
'''

'''
 
import urllib2
import urllib
import cookielib
import hashlib
import re
import time
import json
from pip._vendor.distlib._backport.tarfile import TUREAD
 
class Spide:
    def __init__(self,proxy_ip,proxy_type,proxy_port,use_proxy=False):
        print 'using the proxy info :',proxy_ip
        self.proxy = urllib2.ProxyHandler({proxy_type: proxy_ip+":"+proxy_port})
        self.usercode = ""
        self.userid = ""
        self.cj = cookielib.LWPCookieJar();
       
        self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cj));
        if use_proxy:
            self.opener = urllib2.build_opener(self.proxy)
        urllib2.install_opener(self.opener);
 
    #获取代理列表
    def get_proxy(self):
        proxy_info_json = ""
        #first get the proxy info from
        try:
            reqRequest_proxy =  urllib2.Request('http://gXiXmXmXeXpXrXoXxXy.com/api/getProxy');
            reqRequest_proxy.add_header('Accept','*/*');
            reqRequest_proxy.add_header('Accept-Language','zh-CN,zh;q=0.8');
            reqRequest_proxy.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36');
            reqRequest_proxy.add_header('Content-Type','application/x-www-form-urlencoded');
           
           
            proxy_info = urllib2.urlopen(reqRequest_proxy).read();
            print proxy_info
            proxy_info_json = json.loads(proxy_info)
            return_str=proxy_info_json['protocol']+":"+proxy_info_json['ip']+proxy_info_json['port']
        except Exception,e:    
            print 'proxy have problem'
            #print proxy_info_json['protocol']
            #print proxy_info_json['ip']
            #print proxy_info_json['port']
        return proxy_info_json
 
        #print proxy_info
    def chrome(self):
        try:
           
            reqRequest =  urllib2.Request('http://www.503error.com');
            reqRequest.add_header('Accept','*/*');
            reqRequest.add_header('Accept-Language','zh-CN,zh;q=0.8');
            reqRequest.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36');
            reqRequest.add_header('Content-Type','application/x-www-form-urlencoded');
            content = urllib2.urlopen(reqRequest).read();
        except Exception,e:
            print 'oppps'
       
       
       
        print 'done'
 
 
 
if __name__ == "__main__":
 
    for count in range(100):
        print '################################:',count
        print 'Geting the new proxy info:'
        test = Spide(proxy_ip='test',proxy_type='http',proxy_port='3128',use_proxy=False)
        proxy_list = test.get_proxy()
        #print proxy_list
       
        print 'start to chrome'
        spide1 = Spide(proxy_ip=proxy_list['ip'],proxy_type=proxy_list['protocol'],proxy_port=proxy_list['port'],use_proxy=True)
        spide1.chrome()
        time.sleep(5)
 

时间: 2024-10-27 01:27:56

python自动获取代理列表并通过代理爬取网站的相关文章

python 爬取网站,没有正确的返回值?

问题描述 python 爬取网站,没有正确的返回值? #coding=utf-8 import sys import time import requests #from lxml import etree from PIL import Image reload(sys) sys.setdefaultencoding('utf-8') time=int(time.time()) session=requests.session() user_agent='Mozilla/5.0 (Window

[python] lantern访问中文维基百科及selenium爬取维基百科语料

希望文章对你有所帮助,尤其是web爬虫初学者和NLP相关同学.当然你也能,懂的~ 目录: 0 前言 1 lantern访问中文维基百科 2 Selenium调用Chrome自动访问维基百科 3 Selenium爬取维基百科信息 代码及软件下载地址:http://download.csdn.net/detail/eastmount/9422875 0 前言 在对海量知识挖掘和自然语言处理(Natural Language Processing,简称NLP)中会大量涉及到三大百科的语料问题,尤其是中

Python爬虫:用BeautifulSoup进行NBA数据爬取

爬虫主要就是要过滤掉网页中无用的信息,抓取网页中有用的信息 一般的爬虫架构为: 在python爬虫之前先要对网页的结构知识有一定的了解,如网页的标签,网页的语言等知识,推荐去W3School: W3school链接进行了解 在进行爬虫之前还要有一些工具: 1.首先Python 的开发环境:这里我选择了python2.7,开发的IDE为了安装调试方便选择了用VS2013上的python插件,在VS上进行开发(python程序的调试与c的调试差不多较为熟悉): 2.网页源代码的查看工具:虽然每一个浏

python爬取网站数据保存使用的方法_python

编码问题因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这个机会算是彻底搞清楚了.问题要从文字的编码讲起.原本的英文编码只有0~255,刚好是8位1个字节.为了表示各种不同的语言,自然要进行扩充.中文的话有GB系列.可能还听说过Unicode和UTF-8,那么,它们之间是什么关系呢?Unicode是一种编码方案,又称万国码,可见其包含之广.但是具体存储到计算机上,并不用这种编码,可以说它起着一个中间人的作用.你可以再把Unicode编码(encode)为UTF-8,或者GB,再存储到计算机

[python爬虫] Selenium定向爬取虎扑篮球海量精美图片

前言:          作为一名从小就看篮球的球迷,会经常逛虎扑篮球及湿乎乎等论坛,在论坛里面会存在很多精美图片,包括NBA球队.CBA明星.花边新闻.球鞋美女等等,如果一张张右键另存为的话真是手都点疼了.作为程序员还是写个程序来进行吧!         所以我通过Python+Selenium+正则表达式+urllib2进行海量图片爬取.        前面讲过太多Python爬虫相关的文章了,如爬取新浪博客.维基百科Infobox.百度百科.游迅网图片,也包括Selenium安装过程等等,

Python使用Srapy框架爬虫模拟登陆并抓取知乎内容_python

一.Cookie原理HTTP是无状态的面向连接的协议, 为了保持连接状态, 引入了Cookie机制 Cookie是http消息头中的一种属性,包括: Cookie名字(Name)Cookie的值(Value) Cookie的过期时间(Expires/Max-Age) Cookie作用路径(Path) Cookie所在域名(Domain),使用Cookie进行安全连接(Secure) 前两个参数是Cookie应用的必要条件,另外,还包括Cookie大小(Size,不同浏览器对Cookie个数及大小

使用TaskManager爬取2万条代理IP实现自动投票功能

话说某天心血来潮想到一个问题,朋友圈里面经常有人发投票链接,让帮忙给XX投票,以前呢会很自觉打开链接帮忙投一票.可是这种事做多了就会考虑能不能使用工具来进行投票呢,身为一名程序猿决定研究解决这个问题.于是有了以下思考 1.是否能一个人投多票,如果不行又是什么限制了一人投多票? 答:投票网站限制了一个IP或者一个用户只能投一票,防止恶意刷票行为 2.如果是一个IP一票那是否代表着多个IP就能投多票了呢? 答:答案是肯定的 3.用什么方法能够在代码里面改变自己请求的IP? 答:HTTP请求的时候设置

利用Python爬取可用的代理IP_python

前言 就以最近发现的一个免费代理IP网站为例:http://www.xicidaili.com/nn/.在使用的时候发现很多IP都用不了. 所以用Python写了个脚本,该脚本可以把能用的代理IP检测出来. 脚本如下: #encoding=utf8 import urllib2 from bs4 import BeautifulSoup import urllib import socket User_Agent = 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv

详解Python如何获取列表(List)的中位数_python

前言 中位数是一个可将数值集合划分为相等的上下两部分的一个数值.如果列表数据的个数是奇数,则列表中间那个数据就是列表数据的中位数:如果列表数据的个数是偶数,则列表中间那2个数据的算术平均值就是列表数据的中位数.在这个任务里,你将得到一个含有自然数的非空数组(X).你必须把它分成上下两部分,找到中位数. 输入: 一个作为数组的整数(int)列表(list)的. 输出: 数组的中位数(int, float).  示例 get_median([1, 2, 3, 4, 5]) == 3 get_medi