前面已经爬取了代理,今天我们使用Selenium&PhantomJS的方式爬取快代理 :快代理 - 高速http代理ip每天更新

首先分析一下快代理,如下

使用谷歌浏览器,检查,发现每个代理信息都在tr里面,每个tr里面包含多个td,就是IP的信息。

这个结构我们可以通过多种方法抓取,例如bs4、xpath、selenium等

这里我们演示selenium方法。具体解释在下面代码中都有的。

 from selenium import webdriver

 class Item(object):
'''
模拟scrapy框架
写item类
用以表示每个代理
'''
ip = None #IP地址
port = None #端口
anonymous = None #是否匿名
type = None #http 或者https
local = None #物理地址
speed = None #速度 class GetProxy(object):
def __init__(self):
self.starturl = 'http://www.kuaidaili.com/free/inha/'
self.urls = self.get_urls()
self.proxylist = self.get_proxy_list(self.urls)
self.filename = 'proxy.txt'
self.saveFile(self.filename,self.proxylist) def get_urls(self):
'''
:return: 返回代理url列表
'''
urls = []
for i in range(1,3):
url = self.starturl + str(i)
urls.append(url)
return urls def get_proxy_list(self,urls):
'''
爬取代理列表
:param urls:
:return:
'''
browser = webdriver.PhantomJS()
proxy_list = [] for url in urls:
browser.get(url) # 通过get方法打开
browser.implicitly_wait(3)
elements = browser.find_elements_by_xpath('//tbody/tr') #找到每个代理的位置
for element in elements:
item = Item()
item.ip = element.find_element_by_xpath('./td[1]').text
item.port = element.find_element_by_xpath('./td[2]').text
item.anonymous = element.find_element_by_xpath('./td[3]').text
item.local = element.find_element_by_xpath('./td[4]').text
item.speed = element.find_element_by_xpath('./td[5]').text
print(item.ip)
proxy_list.append(item) browser.quit()
return proxy_list def saveFile(self,filename,proxy_list):
'''
将爬取的信息保存到本地
:param filename:
:param proxy_list:
:return:
'''
with open(filename,'w') as f:
for item in proxy_list:
f.write(item.ip + '\t')
f.write(item.port + '\t')
f.write(item.anonymous + '\t')
f.write(item.local + '\t')
f.write(item.speed + '\n\n') if __name__ == '__main__':
Get = GetProxy()

下面我们展示一下爬取的结果

如果用到代理的话,还需要对这些IP进行测试一下。

使用Selenium&PhantomJS的方式爬取代理的更多相关文章

  1. 使用selenium+phantomJS实现网页爬取

    有些网站反爬虫技术设计的非常好,很难采用WebClient等技术进行网页信息爬取,这时可以考虑采用selenium+phantomJS模拟浏览器(其实是真实的浏览器)的方式进行信息爬取.之前一直使用的 ...

  2. selenium&phantomjs实战--漫话爬取

    为什么直接保存当前网页,而不是找到所有漫话链接,再有针对性的保存图片? 因为防盗链的原因,当直接保存漫话链接图片时,只能保存到防盗链的图片. #!/usr/bin/env python # _*_ c ...

  3. 针对源代码和检查元素不一致的网页爬虫——利用Selenium、PhantomJS、bs4爬取12306的列车途径站信息

    整个程序的核心难点在于上次豆瓣爬虫针对的是静态网页,源代码和检查元素内容相同:而在12306的查找搜索过程中,其网页发生变化(出现了查找到的数据),这个过程是动态的,使得我们在审查元素中能一一对应看到 ...

  4. Selenium+Chrome/phantomJS模拟浏览器爬取淘宝商品信息

    #使用selenium+Carome/phantomJS模拟浏览器爬取淘宝商品信息 # 思路: # 第一步:利用selenium驱动浏览器,搜索商品信息,得到商品列表 # 第二步:分析商品页数,驱动浏 ...

  5. Scrapy 通过登录的方式爬取豆瓣影评数据

    Scrapy 通过登录的方式爬取豆瓣影评数据 爬虫 Scrapy 豆瓣 Fly 由于需要爬取影评数据在来做分析,就选择了豆瓣影评来抓取数据,工具使用的是Scrapy工具来实现.scrapy工具使用起来 ...

  6. python爬虫爬取代理IP

    # #author:wuhao # #--*------------*-- #-****#爬取代理IP并保存到Excel----#爬取当日的代理IP并保存到Excel,目标网站xicidaili.co ...

  7. Python爬虫-代理池-爬取代理入库并测试代理可用性

    目的:建立自己的代理池.可以添加新的代理网站爬虫,可以测试代理对某一网址的适用性,可以提供获取代理的 API. 整个流程:爬取代理 ----> 将代理存入数据库并设置分数 ----> 从数 ...

  8. Python实训day07pm【Selenium操作网页、爬取数据-下载歌曲】

    练习1-爬取歌曲列表 任务:通过两个案例,练习使用Selenium操作网页.爬取数据.使用无头模式,爬取网易云的内容. ''' 任务:通过两个案例,练习使用Selenium操作网页.爬取数据. 使用无 ...

  9. 爬虫实例——爬取淘女郎相册(通过selenium、PhantomJS、BeautifulSoup爬取)

    环境 操作系统:CentOS 6.7 32-bit Python版本:2.6.6 第三方插件 selenium PhantomJS BeautifulSoup 代码 # -*- coding: utf ...

随机推荐

  1. java代码--------随机输出100个随机数,要求每行10个数

    总结:不敢爱你么开口 package com.sads; ///实现随机输出100个数字,数字是0到9之间,每行输出10个 public class Wss { public static void ...

  2. java6枚举类型

    java.lang.Enum > 使用enum定义. 类如: public class EnumDemo { enum Edge { TOP, BOTTOM, LEFT, RIGHT//定义了一 ...

  3. questions information

    1. 面向对象 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 三大特性: 封装: -- 将内容封装到对象中 -- 将方法疯 ...

  4. Canvas帧数和步长实例

    <!DOCTYPE HTML> <html lang="zh-CN"> <head> <meta http-equiv="Con ...

  5. A start job is running for /etc/rc.d/rc.local ... ... no limit

    /etc/rc.d/rc.local文件中配置了redis随机启动但是没有设置redis启动为守护进程(daemonize yes)导致redis启动后阻塞

  6. Docking非原生配体

    转载于 https://mp.weixin.qq.com/s/VDN1qAZGIMol6prwQW4umw Docking非原生配体 在前面的例子中,AutoDock Vina能把配体构象调整到几乎原 ...

  7. C链表

    结构指针的应用,链表处理 1,链表的概念 链表是将若干数据项按一定规则连接起来的[数据类型]表,链表中的每一个数据称为一个节点,既链表是由称为节点的元素组成的,节点多少根据需要确定. 链表连接规则: ...

  8. centos7.3查看时区

    [root@iZ2ze3gf6h0zndx5dxyhqiZ ~]# date -R Fri, Apr :: + 即可查看时区 我们国家的东八区(+0800) 查看clock系统配置文件 [root@i ...

  9. Django实现支付宝付款和微信支付

    支付宝支付和微信支付是当今互联网产品常用的功能,我使用Django Rest Framework实现了网页上支付宝支付和微信支付的一个通用服务,提供rpc接口给其他服务,包括获取支付宝支付页面url的 ...

  10. 微信小程序开发教程,大多数人都搞错的八个问题

    小程序目前被炒得沸沸扬扬,无数媒体和企业借机获取阅读流量. 这再次证明一点,微信想让什么火,真的就能让什么火.这种能力真是全中国再也没有人有了,政府也没有. 但四处传的消息很多是失真的,废话不说,先列 ...