爬虫入门五(Phantomjs和selenium)
来源:互联网 发布:java 数据库 proxy 编辑:程序博客网 时间:2024/05/18 00:12
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 Selectselect=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_optionsselect.options()#提交某个元素element.submit()driver.find_element_by_id('submit').click()
现在的网页越来越多采用了 Ajax 技术,这样程序便不能确定何时某个元素完全加载出来了。这会让元素定位困难而且会提高产生 ElementNotVisibleException 的概率。
所以 Selenium 提供了两种等待方式,一种是隐式等待,一种是显式等待。
显式等待显式等待指定某个条件,然后设置最长等待时间。如果在这个时间还没有找到元素,那么便会抛出异常了from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom 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
阅读全文
0 0
- 爬虫入门五(Phantomjs和selenium)
- Python爬虫利器Selenium+PhantomJS系列入门
- 爬虫利器:Selenium+PhantomJS
- phantomjs+selenium+python爬虫
- 爬虫-08-selenium & phantomjs
- selenium 和 PhantomJS,BeautifulSoup 百度知道爬虫实战
- Python爬虫Selenium和PhantomJS系列之十三
- Scrapy+PhantomJS+Selenium动态爬虫
- Scrapy+PhantomJS+Selenium动态爬虫
- Scrapy+PhantomJS+Selenium动态爬虫
- 爬虫学习笔记--Selenium PhantomJS
- Selenium+Chrome(PhantomJs) Python爬虫
- Python爬虫入门(五)PhatomJS+Selenium第二篇
- 网易新闻评论爬虫(python+selenium+PhantomJS)
- Selenium和PhantomJS介绍
- python爬虫的最佳实践(五)--selenium+PhantomJS的简单使用
- python爬虫——用selenium和phantomjs对新浪微博PC端进行爬取(二)
- [python爬虫]selenium+PhantomJS模拟登陆
- 使用Mockito进行单元测试【1】——mock and verify
- 数十种TensorFlow实现案例汇集:代码+笔记
- esriControlsMousePointer
- python生成器小结
- 657
- 爬虫入门五(Phantomjs和selenium)
- ThinkPHP 导出数据到Execel文件中
- Spring七大模块之Core
- Oracle数据泵-schema导入导出
- 关于大端模式(big-endian)与小端模式(little-endian)
- 如何使用python+selenium向富文本编辑器输入内容
- RNN详解
- 最近打算开始学游戏开发,故此先记录一些Unity的学习网站
- ajax