Python实时抓取最新的代理IP

有时候同一个IP去爬取同一网站上的内容,久了之后就会被该网站服务器屏蔽。解决方法就是更换IP。这个时候,在对方网站上,显示的不是我们真实地IP地址,而是代理服务器的IP地址。西刺代理http://www.xicidaili.com/nn/ 提供了很多可用的国内IP,云代理http://www.ip3366.net/提供了许多国外IP可以直接拿来使用。

但是这些代理有的短时间内可能就会失效,为了高效的使用代理,用Python实现一个爬虫,实时抓取代理,并将有效代理存入数据库或写入文件方便我们取用,并可以随时检测数据库和文件中的代理是否已经失效,将失效的代理删除。

  • 下面是python代码实现:
# -*- coding=utf-8 -*-
__author__ = 'yansong'
import re
import requests
from lxml import etree
import urllib2, time, datetime
from lxml import etree
import sqlite3,time
import sys
import chardet

reload(sys)
sys.setdefaultencoding('utf-8') #设置系统默认编码为utf-8

class myProxy():

    def __init__(self):
        self.user_agent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
        self.header = {"User-Agent": self.user_agent}  #请求头
        self.dbname="myproxy.db"     #数据库名
        self.now = time.strftime("%Y-%m-%d")

    #抓取国内高匿代理,并检查IP、PORT 是否可用,若可用则存入数据库,并写入文件,方便需要时取用
    def getXicidaili(self, num):
        nn_url = "http://www.xicidaili.com/nn/" + str(num)
        #国内高匿
        req = urllib2.Request(nn_url, headers=self.header)
        resp = urllib2.urlopen(req, timeout=10)
        content = resp.read()
        et = etree.HTML(content)  #将源码转换为能被XPath匹配的格式

        #网页源码中class 分开了奇偶两个class,使用lxml最方便的方式就是分开获取。刚开始使用一个方式获取,出现很多IP和port抓不到的情况,分开获取可以抓到全部的ip 和port
        result_even = et.xpath('//tr[@class&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值