selenium&phantom实战--获取代理数据
获取快代理网站的数据
注意:

#!/usr/bin/env python
# _*_ coding: utf-8 _*_
# __author__ ='kong'
# 导入模块
from selenium import webdriver # 定义一个类用来存放代理数据
class Item(object):
ip = None
port = None
anonymous = None
type = None
support = None
local = None
speed = None # 主类
class GetProx(object):
def __init__(self):
self.startUrl = "http://www.kuaidaili.com/proxylist/"
self.urls = self.getUrls()
self.proxList = self.getProxyList(self.urls)
self.fileName = 'proxy.txt'
self.saveFile(self.fileName,self.proxList) # 获取所有要访问的url
def getUrls(self):
urls = []
for i in xrange(1,11):
url = self.startUrl + str(i)
urls.append(url)
return urls # 获取每个url的代理数据
def getProxyList(self,urls):
# 创建一个浏览器实例
browser = webdriver.PhantomJS()
proxyList = []
item = Item()
for url in urls:
# 向指定的url发送请求
browser.get(url)
# 智能等待5秒
browser.implicitly_wait(5)
# 获取网页上的代理表格数据
elements = browser.find_elements_by_xpath("//tbody/tr")
for element in elements:
item.ip = element.find_element_by_xpath("./td[1]").text.encode("utf8")
item.port = element.find_element_by_xpath("./td[2]").text.encode("utf8")
item.anonymous = element.find_element_by_xpath("./td[3]").text.encode("utf8")
item.type = element.find_element_by_xpath("./td[4]").text.encode("utf8")
item.support = element.find_element_by_xpath("./td[5]").text.encode("utf8")
item.local = element.find_element_by_xpath("./td[6]").text.encode("utf8")
item.speed = element.find_element_by_xpath("./td[7]").text.encode("utf8")
proxyList.append(item)
# 最后退出浏览器实例
browser.quit()
return proxyList # 代理数据写入文件中
def saveFile(self,fileName,proxyList):
with open(fileName,'w') as fp:
for each in proxyList:
fp.write(each.ip + "\t")
fp.write(each.port + "\t")
fp.write(each.anonymous +"\t")
fp.write(each.type + "\t")
fp.write(each.support + "\t")
fp.write(each.local + "\t")
fp.write(each.speed + "\t")
fp.write("\n") if __name__ == '__main__':
gp = GetProx()
selenium&phantom实战--获取代理数据的更多相关文章
- [Python爬虫] 之一 : Selenium+Phantomjs动态获取网站数据信息
本人刚才开始学习爬虫,从网上查询资料,写了一个利用Selenium+Phantomjs动态获取网站数据信息的例子,当然首先要安装Selenium+Phantomjs,具体的看 http://www.c ...
- Swift实战-豆瓣电台(三)获取网络数据
观看地址:http://v.youku.com/v_show/id_XNzMwMzQxMzky.html 这节内容,我们先说了怎么将storyboard中的组件在类中进行绑定.然后写了一个类用来获取网 ...
- 【python爬虫实战】使用Selenium webdriver采集山东招考数据
目录 1.目标 2.Selenium webdriver说明 2.1 为什么使用webdriver 2.2 webdriver支持浏览器 2.3 配置与使用说明 3.采集 3.1 分析网站 3.2 遍 ...
- 实时获取股票数据,免费!——Python爬虫Sina Stock实战
更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. 实时股票数据的重要性 对于四大可交易资产:股票.期货.期权.数字货币来说,期货.期权.数字货币,可以从交 ...
- python爬虫实战(一)——实时获取代理ip
在爬虫学习的过程中,维护一个自己的代理池是非常重要的. 详情看代码: 1.运行环境 python3.x,需求库:bs4,requests 2.实时抓取西刺-国内高匿代理中前3页的代理ip(可根据需求自 ...
- selenium 获取table数据
public class Table { /** * @param args */ public static void main(String[] args) { // TODO Auto-gene ...
- python+selenium 自动化测试实战
一.前言: 之前的文章说过, 要写一篇自动化实战的文章, 这段时间比较忙再加回家过11一直没有更新博客,今天整理一下实战项目的代码共大家学习.(注:项目是针对我们公司内部系统的测试,只能内部网络访问, ...
- selenium抓取动态网页数据
1.selenium抓取动态网页数据基础介绍 1.1 什么是AJAX AJAX(Asynchronouse JavaScript And XML:异步JavaScript和XML)通过在后台与服务器进 ...
- iOS开发之Socket通信实战--Request请求数据包编码模块
实际上在iOS很多应用开发中,大部分用的网络通信都是http/https协议,除非有特殊的需求会用到Socket网络协议进行网络数 据传输,这时候在iOS客户端就需要很好的第三方CocoaAsyncS ...
随机推荐
- [转]SQL的主键和外键约束
SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外 ...
- 【数组】Product of Array Except Self
题目: iven an array of n integers where n > 1, nums, return an array output such that output[i] is ...
- js便签笔记(2)——DOM元素的特性(Attribute)和属性(Property)
1.介绍: 上篇js便签笔记http://www.cnblogs.com/wangfupeng1988/p/3626300.html最后提到了dom元素的Attribute和Property,本文简单 ...
- hadoop下安装mahout
安装hadoop 完成 安装mahout 首先下载mahout压缩文件apache-mahout-distribution-0.12.2.tar.gz 放到/home/hadoop/software- ...
- SVN 基本的工作循环
基本的工作循环 Subversion有许多特性.选项和华而不实的高级功能,但日常的工作中你只使用其中的一小部分,在这一节里,我们会介绍许多你在日常工作中常用的命令. 典型的工作周期是这样的: 更新你的 ...
- redis实战笔记(9)-第9章 降低内存占用
本章主要内容 1.短结构( short structure) 2.分片结构( shared structure) 3.打包存储二进制位和字节 本章将介绍3种非常有价值的降低Redis内存占用的 ...
- ABP实战--分页排序
待完成... public async Task<DatatablesResultDto<TaskDto>> GetList(KeywordDatatablesRequestD ...
- oracle 执行的时候,显式输出结果!: set serveroutput on;
- Java对象的强、软、弱和虚引用+ReferenceQueue
Java对象的强.软.弱和虚引用+ReferenceQueue 一.强引用(StrongReference) 强引用是使用最普遍的引用.如果一个对象具有强引用,那垃圾回收器绝不会回收它.当内存空间不足 ...
- mariadb(mysql)从库relaylog损坏无法同步的处理方法
故障说明 晚上备用服务器自动重启,收到报警,备用服务器上的mariadb从库无法去同步主库.启动mariadb后,报如下错误(重点看红色字体) mariadb_1 | -- :: [Note] Pl ...