爬虫入门五(Phantomjs和selenium)
1.Phantomjs
1.简介:
PhantomJS是一个无界面的,可脚本编程的WebKit浏览器引擎。它原生支持多种web 标准:DOM 操作,CSS选择器,JSON,Canvas 以及SVG。
2.必须掌握的操作:
官方文档:http://phantomjs.org/quick-start.html
console.log('输出');#显示
phantom.quit();#停止
#页面加载并下载这个图片
var page = require('webpage').create();
page.open('http://cuiqingcai.com', function (status) {console.log("Status: " + status);if (status === "success") {page.render('example.png');}phantom.exit();
});#函数功能自己推测一下喽
#evaluate 利用 evaluate 方法我们可以获取网页的源代码。这个执行是“沙盒式”的,它不会去执行网页外的 JavaScript 代码。evalute 方法可以返回一个对象,然而返回值仅限于对象,不能包含函数(或闭包)(感觉很重要)
#打开百度网页的console,可以看到一堆信息,evaluate却只返回一个对象。任何来自于网页并且包括来自 evaluate() 内部代码的控制台信息,默认不会显示。可以重写函数。
var url = 'http://www.baidu.com';
var page = require('webpage').create();
page.open(url, function(status) {var title = page.evaluate(function() {return document.title;});console.log('Page title is ' + title);phantom.exit();
});#重写的函数
page.onConsoleMessage = function (msg) {console.log(msg);
};#捕获当前页面,还可以设置大小page.render('github.png');
2.selenium
1.简介:
一种测试工具来验证浏览器页面的行为
2.功能:
#支持多种获取对象方式,填充文本框。<input type="text" name="passwd" id="passwd-id" />element = driver.find_element_by_id("passwd-id")
element = driver.find_element_by_name("passwd")
element = driver.find_elements_by_tag_name("input")
element = driver.find_element_by_xpath("//input[@id='passwd-id']")
#传送内容以及操作
element.send_keys('text',keys.ARROW_DOWN)
#每次传送的内容不会消失
element.clear()
#填充下拉框
from selenium.webdriver.support.ui import Select
select=Select(driver.find_element_by_name('name'))
select.select_by_index()
select.select_by_value()
select.select_by_visible_text()
#获得已选选项
all_selected_options = select.all_selected_options
select.options()
#提交某个元素
element.submit()
driver.find_element_by_id('submit').click()
现在的网页越来越多采用了 Ajax 技术,这样程序便不能确定何时某个元素完全加载出来了。这会让元素定位困难而且会提高产生 ElementNotVisibleException 的概率。
所以 Selenium 提供了两种等待方式,一种是隐式等待,一种是显式等待。
显式等待
显式等待指定某个条件,然后设置最长等待时间。如果在这个时间还没有找到元素,那么便会抛出异常了from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECdriver = webdriver.Chrome()
driver.get("http://somedomain/url_that_delays_loading")
try:element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "myDynamicElement"))#这个地方有多种API选择)
finally:driver.quit()
3.pyquery
1.简介:
python里模仿jquery的操作,语法一致。jQuery?一套js的库,操作更加简单了。
2.小操作:
#初始化,4种,传代码,传地址,传文件,lxml.etree。
doc=pq('')
#属性操作:
li=doc('li')#获得所有<li 内容
type(li)#输出pquery,可以继续筛选,而不是之前的正则返回的列表。
doc.attr('id')#获得id的值
doc.attr('id','anothername')#id 换成另一个名字
li.removeclass('')
li.addclass('')
#dom操作
li.append('content')
li.preappend()#加在内容前,上面内容后。
4.总结:
略微了解了js,jquery。小功能的大致理解。。用的时候再看文档。
17/9/12
爬虫入门五(Phantomjs和selenium)相关推荐
- Python爬虫入门五之URLError异常处理
Python爬虫入门五之URLError异常处理 参考文章: (1)Python爬虫入门五之URLError异常处理 (2)https://www.cnblogs.com/pxuan/p/647362 ...
- Python爬虫入门五URLError异常处理
本节在这里主要说的是 URLError 还有 HTTPError,以及对它们的一些处理 1.URLError 首先解释下 URLError 可能产生的原因: 网络无连接,即本机无法上网 连接不到特定的 ...
- java爬虫出发onclick事件_java爬虫(五)利用selenium 模拟点击获取动态页面的内容...
依赖的资源 1.ChromeDriver与Chrome版本对应参照表及ChromeDriver下载链接 http://npm.taobao.org/mirrors/chromedriver/ 2.Se ...
- python爬虫入门(五)------beautifulsoup4库实例
文章目录 爬取股票信息并保存到自己电脑上 获取大学排名 爬取股票信息并保存到自己电脑上 import requests from bs4 import BeautifulSoup import red ...
- 如何学习Python爬虫[入门篇]?
这篇文章已经过去很久了,有一些学习资源链接已经失效了,还一直有小伙伴在Python的路上摸索.所以我根据自己的学习和工作经历整理了一套Python学习电子书,在公众号「路人甲TM」后台回复关键词「1」 ...
- Python2.x爬虫入门之URLError异常处理
大家好,本节在这里主要说的是URLError还有HTTPError,以及对它们的一些处理. 1.URLError 首先解释下URLError可能产生的原因: (1)网络无连接,即本机无法上网 (2)连 ...
- Scrapy爬虫入门教程五 Selectors(选择器)
Scrapy爬虫入门教程一 安装和基本使用 Scrapy爬虫入门教程二 官方提供Demo Scrapy爬虫入门教程三 命令行工具介绍和示例 Scrapy爬虫入门教程四 Spider(爬虫) Scrap ...
- python爬虫挖掘平台搭建_一篇非常棒的安装Python及爬虫入门博文!
原标题:一篇非常棒的安装Python及爬虫入门博文! 一. 大数据及数据挖掘基础(私信小编007即可获取大量Python学习资料!) 第一部分主要简单介绍三个问题: 1.什么是大数据? 2.什么是数据 ...
- python很全的爬虫入门教程
python很全的爬虫入门教程 一.爬虫前的准备工作 首先,我们要知道什么是爬虫 1.什么是网络爬虫? 网络爬虫是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁 ...
最新文章
- GitHub 上 25 个 Python 学习资源,墙裂推荐!
- 基于MATLAB的面向对象编程(1)——类,属性,方法
- linux shell 输出到数据库,linux shell 入门
- Java Class 文件格式及其简单 Hack
- revit2019 导出obj_revit、3dmax导出object文件软件操作说明.doc
- java 远程debug服务器配置
- C# 在自定义的控制台输出重定向类中整合调用方信息
- 数据结构探险——树篇
- jenkins用ssh agent插件在pipeline里实现scp和远程执行命令
- Linux基本命令 -- grep参数说明及常用用法
- matplotlib——交互按钮中的Home键无法使用
- 【算法】排序_冒泡排序及其优化
- java web表单系统
- java pdf添加图片_Java编辑PDF写入文字 插入图片
- 轻松编写您自己的拖拉机算法,进行算法大战
- Google 文档 地址
- RK3568平台开发系列讲解(驱动篇)驱动开发之GPIO使用
- 一个“精神病”人的世界观
- Seurat | 强烈建议收藏的单细胞分析标准流程(基础质控与过滤)(一)
- Webpack是什么?Webpack有什么应用?
热门文章
- 49 MM配置-库存管理和实际库存-设置容差限制
- 科研诚信与学术规范_大学教授学术造假,违背科研诚信
- python 无头浏览器xhr 文件_Python对Selenium调用浏览器进行封装包括启用无头浏览器,及对应的浏览器配置文件...
- ios测试续航软件,5款iPhone测试iOS电池续航:结果这样 你还升级吗
- python如何创建模块视频_Python | 如何创建模块(模块示例)?
- vutils.save_image==>将给定的张量保存为图像
- css flex布局 模型(CSS justify-content 属性) - 代码案例
- phpcmsV9找配置文件修改JS/CSS/IMG/APP_PATH、upload_path的路径?
- oracle大表复制加并行,GoldenGate复制单表开并行
- 苹果cms V8模板 黑色自适应电影模板