python爬虫爬取代理IP

#
#author:wuhao
#
#--*------------*--
#-****#爬取代理IP并保存到Excel----#爬取当日的代理IP并保存到Excel,目标网站xicidaili.com#如果访问频率太快的话,会被网站封掉IP
import urllib.request
import urllib.parse
import re
import xlwt
import http.cookiejar
import datetime
from bs4 import BeautifulSoup
import time

class GetProxyIp():
    def __init__(self,opener,):
        self.opener=opener

    def GetHtmlpage(self,url):
        html=self.opener.open(url)
        return html.read().decode("utf-8")

    def cleanHtml(self,html):
        #对网页进行清洗,获取IP,端口,类型,是否匿名,服务器地址
        ip=[]
        port=[]
        server_addr=[]
        Is_niming=[]
        type=[]
        time=[]
        soup=BeautifulSoup(html,"html.parser")
        #print(soup)
        try:
            ip_table=soup.find("table",id="ip_list")
            ip_result=ip_table.find_all("tr")

            for i in range(1,len(ip_result),1):
                result_td=ip_result[i].find_all("td")
                ip.append(result_td[1].string)
                port.append(result_td[2].string)
                try:
                    server_addr.append(result_td[3].a.string)
                except:
                    server_addr.append(result_td[3].string)
                Is_niming.append(result_td[4].string)
                type.append(result_td[5].string)
                time.append(result_td[9].string.split(" ")[0])
        except Exception:
            print(Exception)
            print("something wrong happened")
        return ip,port,server_addr,Is_niming,type,time

if __name__ == "__main__":

    #获取当前时间,并截除其前2位
    currentTime = datetime.datetime.now().strftime("%Y-%m-%d")[2:]

    #创建一个opener
    cookie=http.cookiejar.CookieJar()
    cookieHandle=urllib.request.HTTPCookieProcessor(cookie)
    #proxy={"https":"https://222.85.50.64:808"}
    #proxyHandle=urllib.request.ProxyHandler(proxy)
    opener=urllib.request.build_opener(cookieHandle)
    #opener.add_handler(proxyHandle)

    #创建一个header,伪装成浏览器访问
    header=        {
            "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
        }
    head=[]
    for key,value in header.items():
        enum=(key,value)
        head.append(enum)

    #为opener添加head
    opener.addheaders=head

    #需要爬取的地址
    url="http://www.xicidaili.com/nn/{num}/"

    Is_Over=True

    #实例化对象
    GPI=GetProxyIp(opener)
    #
    book=xlwt.Workbook()
    sheet=book.add_sheet(sheetname=currentTime)
    sheet.write(0, 0,"IP地址")
    sheet.write(0, 1, "端口")
    sheet.write(0, 2, "服务器地址")
    sheet.write(0, 3, "匿名")
    sheet.write(0, 4, "类型")
    sheet.write(0, 5 ,"日期")
    #初始化_num为1
    _num=1
    # 初始化位置为开头
    index = 0

    while(Is_Over):
        #temp用于记录是否是当日的代理IP,如果不是记录其位置
        temp=-1

        url1=url.format(num=_num)
        html=GPI.GetHtmlpage(url1)
        result=GPI.cleanHtml(html)

        for k in range(len(result[5])):
            if result[5][k]!=currentTime:
                temp=k
                Is_Over=False
                break
        #如果temp=-1,就全部进行写入
        if temp==-1:
            for i in range(len(result)):
                for j in range(len(result[i])):
                    print("yi写入"+str(result[i][j]))
                    sheet.write(index+j+1,i,result[i][j])
        else:
            for k in range(len(result)):
                for kk in range(temp):
                    print("yi写入" + str(result[k][kk]))
                    sheet.write(index+kk+1,k,  result[k][kk])
        _num += 1
        index+=len(result[0])
        time.sleep(16)
    #
    print("写入完成")
    book.save("proxy.xls")

时间: 2024-10-26 08:59:44

python爬虫爬取代理IP的相关文章

Python 爬虫抓取代理IP,并检测联通性

帮朋友抓了一些代理IP,并根据测试联的通性,放在了不通的文件夹下.特将源码分享 注意: 1,环境Python3.5 2,安装BeautifulSoup4  requests 代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 5

python爬虫爬取csdn博客专家所有博客内容

python爬虫爬取csdn博客专家所有博客内容: 全部过程采取自动识别与抓取,抓取结果是将一个博主的所有 文章存放在以其名字命名的文件内,代码如下 结果如下: 版权声明:本文为博主原创文章,未经博主允许不得转载.

python爬虫爬取美女图片

python 爬虫爬取美女图片 #coding=utf-8 import urllib import re import os import time import threading def getHtml(url): page = urllib.urlopen(url) html = page.read() return html def getImgUrl(html,src): srcre = re.compile(src) srclist = re.findall(srcre,html)

Python爬虫爬取博客园并保存

Python爬虫爬取博客园并保存        爬取博客园指定用户的文章修饰后全部保存到本地 首先定义爬取的模块文件: crawlers_main.py 执行入口 url_manager.py url管理器 download_manager.py 下载模块 parser_manager.py html解析器(解析html需要利用的内容) output_manager.py 输出html网页全部内容文件(包括css,png,js等) crawlers_main.py 执行入口 1 # coding

用Python爬虫爬取广州大学教务系统的成绩(内网访问)

用Python爬虫爬取广州大学教务系统的成绩(内网访问) 在进行爬取前,首先要了解: 1.什么是CSS选择器? 每一条css样式定义由两部分组成,形式如下: [code] 选择器{样式} [/code] 在{}之前的部分就是"选择器"."选择器"指明了{}中的"样式"的作用对象,也就是"样式"作用于网页中的哪些元素.可参考:http://www.w3school.com.cn/cssref/css_selectors.asph

python爬虫—爬取英文名以及正则表达式的介绍

python爬虫—爬取英文名以及正则表达式的介绍 爬取英文名: 一.  爬虫模块详细设计 (1)整体思路 对于本次爬取英文名数据的爬虫实现,我的思路是先将A-Z所有英文名的连接爬取出来,保存在一个csv文件中:再读取csv文件当中的每个英文名链接,采用循环的方法读取每一个英文名链接,根据每个英文名链接爬取每个链接中的数据,保存在新的csv文件当中. 需要写一个爬取英文名链接的函数.将爬取的内容保存在csv文件的函数以及读取csv文件内容的函数.爬取英文名详情页内容的函数. 表5.3.1 函数名

python爬虫爬取微博评论案例详解

这篇文章主要介绍了python爬虫爬取微博评论,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 数据格式:{"name":评论人姓名,"comment_time":评论时间,"comment_info":评论内容,"comment_url":评论人的主页} 以上就是我们需要的信息. 具体操作流程: 我们首相将主页获取完成以后,我们就会发现,其中 的内容带有相

python爬取代理ip

要写爬虫爬取大量的数据,就会面临ip被封的问题,虽然可以通过设置延时的方法来延缓对网站的访问,但是一旦访问次数过多仍然会面临ip被封的风险,这时我们就需要用到动态的ip地址来隐藏真实的ip信息,如果做爬虫项目,建议选取一些平台提供的动态ip服务,引用api即可.目前国内有很多提供动态ip的平台,普遍价格不菲,而对于只想跑个小项目用来学习的话可以参考下本篇文章. 简述 本篇使用简单的爬虫程序来爬取免费ip网站的ip信息并生成json文档,存储可用的ip地址,写其它爬取项目的时候可以从生成的json

Python爬虫爬取知乎小结

博客首发至Marcovaldo's blog (http://marcovaldong.github.io/) 最近学习了一点网络爬虫,并实现了使用python来爬取知乎的一些功能,这里做一个小的总结.网络爬虫是指通过一定的规则自动的从网上抓取一些信息的程序或脚本.我们知道机器学习和数据挖掘等都是从大量的数据出发,找到一些有价值有规律的东西,而爬虫则可以帮助我们解决获取数据难的问题,因此网络爬虫是我们应该掌握的一个技巧. python有很多开源工具包供我们使用,我这里使用了requests.Be