#
#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")
                                                                                                                #欢迎大家评论指导

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

  1. python 批量爬取代理ip

    import urllib.request import re import time import random def getResponse(url): req = urllib.request ...

  2. 爬虫爬取代理IP池及代理IP的验证

    最近项目内容需要引入代理IP去爬取内容. 为了项目持续运行,需要不断构造.维护.验证代理IP. 为了绕过服务端对IP 和 频率的限制,为了阻止服务端获取真正的主机IP. 一.服务器如何获取客户端IP ...

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

    帮朋友抓了一些代理IP,并根据测试联的通性,放在了不通的文件夹下.特将源码分享 注意: 1,环境Python3.5 2,安装BeautifulSoup4  requests 代码如下: 1 2 3 4 ...

  4. Python爬虫教程-11-proxy代理IP,隐藏地址(猫眼电影)

    Python爬虫教程-11-proxy代理IP,隐藏地址(猫眼电影) ProxyHandler处理(代理服务器),使用代理IP,是爬虫的常用手段,通常使用UserAgent 伪装浏览器爬取仍然可能被网 ...

  5. Python爬虫 - 爬取百度html代码前200行

    Python爬虫 - 爬取百度html代码前200行 - 改进版,  增加了对字符串的.strip()处理 源代码如下: # 改进版, 增加了 .strip()方法的使用 # coding=utf-8 ...

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

    用Python爬虫爬取广州大学教务系统的成绩(内网访问) 在进行爬取前,首先要了解: 1.什么是CSS选择器? 每一条css样式定义由两部分组成,形式如下: [code] 选择器{样式} [/code ...

  7. 使用Python爬虫爬取网络美女图片

    代码地址如下:http://www.demodashi.com/demo/13500.html 准备工作 安装python3.6 略 安装requests库(用于请求静态页面) pip install ...

  8. Python爬虫|爬取喜马拉雅音频

    "GOOD Python爬虫|爬取喜马拉雅音频 喜马拉雅是知名的专业的音频分享平台,用户规模突破4.8亿,汇集了有声小说,有声读物,儿童睡前故事,相声小品等数亿条音频,成为国内发展最快.规模 ...

  9. python爬虫爬取内容中,-xa0,-u3000的含义

    python爬虫爬取内容中,-xa0,-u3000的含义 - CSDN博客 https://blog.csdn.net/aiwuzhi12/article/details/54866310

随机推荐

  1. Java课程设计——博客作业教学数据分析系统(201521123091 李嘉廉)

    #课程设计--博客作业教学数据分析系统(201521123084 李嘉廉) 1.团队课程设计博客链接 博客作业教学数据分析系统 2.个人负责模块或任务说明 數據分析 Kmeans聚類算法實現 多元綫性 ...

  2. 扫雷游戏制作过程(C#描述):第四节、菜单操作

    前言 这里给出教程原文地址. 该项目已经放在github上托管. 菜单操作 我们现在的程序单击菜单的时候不会有任何反应,这一节我们主要介绍菜单的相关代码,使得菜单能够正常使用. 现在我们希望在对应级别 ...

  3. 201521123100 《Java程序设计》 第1周学习总结

    1. 本章学习总结 1.简单了解学习了Java及其开发环境,学习使用了Notepad++&eclipse开发软件的使用 2.熟练完成了使用Notepad++运行第一个Java程序"H ...

  4. java第十一次作业

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1 除了使用synch ...

  5. 201521123009 《Java程序设计》第1周学习总结

    1. 本周学习总结 对Java进行了了解与简单的学习.第一次接触Java觉得比较难理解. 希望之后的深入学习可以解决目前的一些问题. 2. 书面作业 为什么java程序可以跨平台运行?执行java程序 ...

  6. 懒人小工具:自动生成Model,Insert,Select,Delete以及导出Excel的方法

    在开发的过程中,我们为了节约时间,往往会将大量重复机械的代码封装,考虑代码的复用性,这样我们可以节约很多时间来做别的事情.最近跳槽到一节webform开发的公司,主要是开发自己公司用的ERP.开始因为 ...

  7. JavaEE成长之路

    前言 学习Java已经有一段时间了,在学习的过程中也走过了不少弯路. 写下这篇博文,主要是想记录下自己学习编程之路,以及反思自己在学习的时候出现的问题,下面也会给出我自认为学习JavaEE的路线,想要 ...

  8. 利用Struts拦截器限制上传图片的格式和大小

    在这之前 Struts的一个核心功能就是大量的拦截器,既然是框架,那么自然也就贴心地为我们准备好了各种常用的功能,比如这里即将讨论的如何限制上传图片的格式和大小.那么既然是使用Struts已经写好的拦 ...

  9. [UIKit学习]05.关于plist

    plist是一种iOS本地化轻量级存储方式 创建plist 选择New File-> Resource->plist 加载plist //获得Plist文件的全路径 NSBundle *b ...

  10. Python 接口测试(五)

    五:使用python进行组织编写接口测试用例 接口测试其实就是几个步骤. 拿到接口的url地址 查看接口是用什么方式发送 添加请求头,请求体 发送查看返回结果,校验返回结果是否正确 明白了接口测试的测 ...