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

python爬虫爬取代理IP的更多相关文章
- python 批量爬取代理ip
import urllib.request import re import time import random def getResponse(url): req = urllib.request ...
- 爬虫爬取代理IP池及代理IP的验证
最近项目内容需要引入代理IP去爬取内容. 为了项目持续运行,需要不断构造.维护.验证代理IP. 为了绕过服务端对IP 和 频率的限制,为了阻止服务端获取真正的主机IP. 一.服务器如何获取客户端IP ...
- Python 爬虫抓取代理IP,并检测联通性
帮朋友抓了一些代理IP,并根据测试联的通性,放在了不通的文件夹下.特将源码分享 注意: 1,环境Python3.5 2,安装BeautifulSoup4 requests 代码如下: 1 2 3 4 ...
- Python爬虫教程-11-proxy代理IP,隐藏地址(猫眼电影)
Python爬虫教程-11-proxy代理IP,隐藏地址(猫眼电影) ProxyHandler处理(代理服务器),使用代理IP,是爬虫的常用手段,通常使用UserAgent 伪装浏览器爬取仍然可能被网 ...
- Python爬虫 - 爬取百度html代码前200行
Python爬虫 - 爬取百度html代码前200行 - 改进版, 增加了对字符串的.strip()处理 源代码如下: # 改进版, 增加了 .strip()方法的使用 # coding=utf-8 ...
- 用Python爬虫爬取广州大学教务系统的成绩(内网访问)
用Python爬虫爬取广州大学教务系统的成绩(内网访问) 在进行爬取前,首先要了解: 1.什么是CSS选择器? 每一条css样式定义由两部分组成,形式如下: [code] 选择器{样式} [/code ...
- 使用Python爬虫爬取网络美女图片
代码地址如下:http://www.demodashi.com/demo/13500.html 准备工作 安装python3.6 略 安装requests库(用于请求静态页面) pip install ...
- Python爬虫|爬取喜马拉雅音频
"GOOD Python爬虫|爬取喜马拉雅音频 喜马拉雅是知名的专业的音频分享平台,用户规模突破4.8亿,汇集了有声小说,有声读物,儿童睡前故事,相声小品等数亿条音频,成为国内发展最快.规模 ...
- python爬虫爬取内容中,-xa0,-u3000的含义
python爬虫爬取内容中,-xa0,-u3000的含义 - CSDN博客 https://blog.csdn.net/aiwuzhi12/article/details/54866310
随机推荐
- CCIE-MPLS VPN-实验手册(上卷)
看完了看完了看完了,豪爽豪爽豪爽,一个月了,写得挺棒.总共14个mpls vpn的实验,为留下学习的痕迹,原封不动献出. CCIE实验手册 (路由部分-MPLSVPN基础篇) [CCIE] JUST ...
- 201521123048《Java程序设计》第6周学习总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 2. 书面作业 1.clone方法 1.1 Object对 ...
- 201521123081《Java程序设计》 第1周学习总结
#1. 本周学习总结 ###JAVA是1995年SUN推出的一种简单的,跨平台的,面向对象的,分布式的,解释的,健壮的,安全的,结构的,中立的,可移植的,性能很优异的,多线程的,动态的语言.是世界上广 ...
- 201521123076 《Java程序设计》第10周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 创建线程方式: 定义Thread的子类,覆盖run(),之后创建实例.因为开销大,一般不用. 定义实现Run ...
- 201521123008《Java程序设计》第十三周学习总结
1. 本周学习总结 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu.edu.cn,分析返回结果有何不同?为什么会有这样的不同? ping w ...
- 解决liblzo2.so缺失
系统:CentOS5.8 提示错误: error while loading shared libraries: liblzo2.so.2: cannot open shared object fil ...
- Git的使用详解
起步 关于版本控制 Git 简史 Git 基础 安装 Git 初次运行 Git 前的配置 获取帮助 小结 Git 基础 取得项目的 Git 仓库 记录每次更新到仓库 查看提交历史 撤消操作 远程仓库的 ...
- WebService的简单介绍与入门使用
WebService是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布式 ...
- BZOJ1059_矩阵游戏_KEY
1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec Memory Limit: 162 MB Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一 ...
- MySQL所学所思所想
MySQL更改线上配置方案思想:原则上,需要备机.备份工作准备到位,有参数调优配置方案.有配置回退方案.有应急切换备机方案.以上方案评审无问题,然后可以和客户约定实施的时间.服务中断时间,先向客户侧申 ...