#
#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. 2017年9月19日 JavaScript语法操作

    关于JavaScript个人还是觉得比较有意思的 {在</html>后面写或者在</body>前面写(必须紧贴</body>)} <script> va ...

  2. org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not a

    如果出现了这个错误,看看在使用Hibernate的时候有没有在事务的环境下执行操作!

  3. Servlet第一篇【介绍Servlet、HTTP协议、WEB目录结构、编写入门Servlet程序、Servlet生命周期】

    什么是Serlvet? Servlet其实就是一个遵循Servlet开发的java类.Serlvet是由服务器调用的,运行在服务器端. 为什么要用到Serlvet? 我们编写java程序想要在网上实现 ...

  4. myeclipse一些快捷键 错了或者没说到补充下

    Ctrl + 1 快速修复Ctrl + D  删除当前行 Ctrl + Alt + ↓ 复制当前行到下一行(复制增加)Ctrl + Alt + ↑ 复制当前行到上一行(复制增加)Alt + ↓ 当前行 ...

  5. 编号中的数学_KEY

    题目描述: 从美国州际高速公路建筑者那里,奶牛们引进了一种路径编号系统,来给牧场之间的道 路编号.他们已经把 N(1<=N<=25)个牧场,用 1 到 N 的整数编号.现在他们需要将牧场间 ...

  6. 02_Java运行环境搭建

    1.Java运行环境搭建,对于初学者来说,主要下载安装jdk即可,windows操作系统再配合记事本,即可进行java程序开发.后续的学习以及工作中需要使用IDE工具进行开发,常用IDE工具是ecli ...

  7. Oculus Store游戏下载默认路径修改方法

    最近在测试一款VR游戏,所以在硬件设备上选择了HTC Vive和Oculus两款眼镜.相对而言,HTC安装比较人性化:支持自定义安装路径,而且可在界面更改应用程序下载位置,如图所示: 这下替我节省了不 ...

  8. vue实例讲解之vue-router的使用

    实例讲解系列之vue-router的使用 先总结一下vue-router使用的基本框架: 1.安装并且引入vue-router 安装:npm install vue-router --save-dev ...

  9. Query DSL(1)

    https://www.elastic.co/guide/en/elasticsearch/reference/2.3/query-dsl.html Query DSL GET _search { & ...

  10. spring事务不会进行回滚的情况

    if(userSave){ try { userDao.save(user); userCapabilityQuotaDao.save(capabilityQuota); } catch (Excep ...