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)相关推荐

  1. Python爬虫入门五之URLError异常处理

    Python爬虫入门五之URLError异常处理 参考文章: (1)Python爬虫入门五之URLError异常处理 (2)https://www.cnblogs.com/pxuan/p/647362 ...

  2. Python爬虫入门五URLError异常处理

    本节在这里主要说的是 URLError 还有 HTTPError,以及对它们的一些处理 1.URLError 首先解释下 URLError 可能产生的原因: 网络无连接,即本机无法上网 连接不到特定的 ...

  3. java爬虫出发onclick事件_java爬虫(五)利用selenium 模拟点击获取动态页面的内容...

    依赖的资源 1.ChromeDriver与Chrome版本对应参照表及ChromeDriver下载链接 http://npm.taobao.org/mirrors/chromedriver/ 2.Se ...

  4. python爬虫入门(五)------beautifulsoup4库实例

    文章目录 爬取股票信息并保存到自己电脑上 获取大学排名 爬取股票信息并保存到自己电脑上 import requests from bs4 import BeautifulSoup import red ...

  5. 如何学习Python爬虫[入门篇]?

    这篇文章已经过去很久了,有一些学习资源链接已经失效了,还一直有小伙伴在Python的路上摸索.所以我根据自己的学习和工作经历整理了一套Python学习电子书,在公众号「路人甲TM」后台回复关键词「1」 ...

  6. Python2.x爬虫入门之URLError异常处理

    大家好,本节在这里主要说的是URLError还有HTTPError,以及对它们的一些处理. 1.URLError 首先解释下URLError可能产生的原因: (1)网络无连接,即本机无法上网 (2)连 ...

  7. Scrapy爬虫入门教程五 Selectors(选择器)

    Scrapy爬虫入门教程一 安装和基本使用 Scrapy爬虫入门教程二 官方提供Demo Scrapy爬虫入门教程三 命令行工具介绍和示例 Scrapy爬虫入门教程四 Spider(爬虫) Scrap ...

  8. python爬虫挖掘平台搭建_一篇非常棒的安装Python及爬虫入门博文!

    原标题:一篇非常棒的安装Python及爬虫入门博文! 一. 大数据及数据挖掘基础(私信小编007即可获取大量Python学习资料!) 第一部分主要简单介绍三个问题: 1.什么是大数据? 2.什么是数据 ...

  9. python很全的爬虫入门教程

    python很全的爬虫入门教程 一.爬虫前的准备工作 首先,我们要知道什么是爬虫 1.什么是网络爬虫? 网络爬虫是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁 ...

最新文章

  1. GitHub 上 25 个 Python 学习资源,墙裂推荐!
  2. 基于MATLAB的面向对象编程(1)——类,属性,方法
  3. linux shell 输出到数据库,linux shell 入门
  4. Java Class 文件格式及其简单 Hack
  5. revit2019 导出obj_revit、3dmax导出object文件软件操作说明.doc
  6. java 远程debug服务器配置
  7. C# 在自定义的控制台输出重定向类中整合调用方信息
  8. 数据结构探险——树篇
  9. jenkins用ssh agent插件在pipeline里实现scp和远程执行命令
  10. Linux基本命令 -- grep参数说明及常用用法
  11. matplotlib——交互按钮中的Home键无法使用
  12. 【算法】排序_冒泡排序及其优化
  13. java web表单系统
  14. java pdf添加图片_Java编辑PDF写入文字 插入图片
  15. 轻松编写您自己的拖拉机算法,进行算法大战
  16. Google 文档 地址
  17. RK3568平台开发系列讲解(驱动篇)驱动开发之GPIO使用
  18. 一个“精神病”人的世界观
  19. Seurat | 强烈建议收藏的单细胞分析标准流程(基础质控与过滤)(一)
  20. Webpack是什么?Webpack有什么应用?

热门文章

  1. 49 MM配置-库存管理和实际库存-设置容差限制
  2. 科研诚信与学术规范_大学教授学术造假,违背科研诚信
  3. python 无头浏览器xhr 文件_Python对Selenium调用浏览器进行封装包括启用无头浏览器,及对应的浏览器配置文件...
  4. ios测试续航软件,5款iPhone测试iOS电池续航:结果这样 你还升级吗
  5. python如何创建模块视频_Python | 如何创建模块(模块示例)?
  6. vutils.save_image==>将给定的张量保存为图像
  7. css flex布局 模型(CSS justify-content 属性) - 代码案例
  8. phpcmsV9找配置文件修改JS/CSS/IMG/APP_PATH、upload_path的路径?
  9. oracle大表复制加并行,GoldenGate复制单表开并行
  10. 苹果cms V8模板 黑色自适应电影模板