selenium&PhantomJS笔记
配置pip文件
Windows下pip 配置文件的位置
%HOME%/pip/pip.ini
linux下安装pip,以Debian Linux为例
su -
apt-get install python-pip
linux下pip的配置文件是$HOME/.pip/pip.conf
验证安装源是否修改成功
su -
python -m pip install -upgrade pip
pip文件内容
[global]
index-url = https://pypi.mirrors.ustc.edu.cn/simple
#index-url = https://pypi.hustunique.com/simple
#index-url = https://pypi.douban.com/simple
selenium模拟浏览器操作
Windows安装
pip install selenium
Linux安装
apt-get install selenium
查看selenium支持的浏览器
from selenium import webdriver
help(webdriver)
无头浏览器phantomJs
直接将其exe文件复制到python的安装目录中。
将webdriver帮助文档输出到文件
from selenium import webdriver
import sys
browser = webdriver.PhantomJS()
out = sys.stdout
sys.stdout = open('browserHelp.txt','w')
help(browser)
sys.stdout.close()
sys.stdout = out
browser.quit()
exit()
示例:百度搜索
# 打开网站主页面
from selenium import webdriver
browser = webdriver.PhantomJS()
browser.get("https://www.baidu.com")
# 智能等待,最长等待10秒
browser.implicitly_wait(10)
# 获取搜索结果,定位有效数据的位置或表单框架
find_element(self,by='id',value=None) # 取第一个符合条件的值
find_elements(self,by='id',value=None) # 取所有符合条件的值
这两个函数可以替代下面所有函数,如find_element(by='id',value='abc') == find_element_by_id("abc")
find_element_by_class_name(self,name)
find_element_by_css_selector(self,css_selector)
find_element_by_id(self,id)
find_element_by_link_text(self,link_text)
find_element_by_name(self,name)
find_element_by_partial_link_text(self,link_text)
find_element_by_tag_name(self,name)
find_element_by_xpath(self,xpath)
# 查找文本框
textElement = browser.find_element_by_class_name("s_ipt")
textElement = browser.find_element_by_id("kw")
textElement.clear()
textElement.send_keys("python selenium")
# 查找提交按扭
submitElement = browser.find_element_by_class_name("btn self-btn bg s_btn")
submitElement = browser.find_element_by_id("su")
submitElement.click()
print browser.title
# 定位有效数据
resultElements = browser.find_elements_by_class_name("c-tools")
len(resultElements)
# 一般来说定位结果用by_xpath或by_css比较方便
# 从位置中获取有效数据
element.text
element.get_attribute(name)
value = resultElements[0].get_attribute("data-tools")
valueDic = eval(value)
print valueDic.get("title").decode("utf8")
print valueDic.get("url")
selenium&PhantomJS笔记的更多相关文章
- selenium + phantomjs 爬取落网音乐
题记: 作为一个业余程序猿,最大的爱好就是电影和音乐了,听音乐当然要来点有档次的.落网的音乐的逼格有点高,一听听了10年.学习python一久了,于是想用python技术把落网的音乐爬下来随便听. 目 ...
- 使用selenium+phantomJS实现网页爬取
有些网站反爬虫技术设计的非常好,很难采用WebClient等技术进行网页信息爬取,这时可以考虑采用selenium+phantomJS模拟浏览器(其实是真实的浏览器)的方式进行信息爬取.之前一直使用的 ...
- Selenium + PhantomJS + python 简单实现爬虫的功能
Selenium 一.简介 selenium是一个用于Web应用自动化程序测试的工具,测试直接运行在浏览器中,就像真正的用户在操作一样 selenium2支持通过驱动真实浏览器(FirfoxDrive ...
- 数据抓取的艺术(一):Selenium+Phantomjs数据抓取环境配置
数据抓取的艺术(一):Selenium+Phantomjs数据抓取环境配置 2013-05-15 15:08:14 分类: Python/Ruby 数据抓取是一门艺术,和其他软件不同,世界上 ...
- 动态网页爬取例子(WebCollector+selenium+phantomjs)
目标:动态网页爬取 说明:这里的动态网页指几种可能:1)需要用户交互,如常见的登录操作:2)网页通过JS / AJAX动态生成,如一个html里有<div id="test" ...
- python+selenium自动化软件测试(第6章):selenium phantomjs页面解析使用
我们都知道Selenium是一个Web的自动化测试工具,可以在多平台下操作多种浏览器进行各种动作,比如运行浏览器,访问页面,点击按钮,提交表单,浏览器窗口调整,鼠标右键和拖放动作,下拉框和对话框处理等 ...
- 学习用java基于webMagic+selenium+phantomjs实现爬虫Demo爬取淘宝搜索页面
由于业务需要,老大要我研究一下爬虫. 团队的技术栈以java为主,并且我的主语言是Java,研究时间不到一周.基于以上原因固放弃python,选择java为语言来进行开发.等之后有时间再尝试pytho ...
- 利用Selenium+PhantomJS 实现截图
using OpenQA.Selenium; using OpenQA.Selenium.PhantomJS; using System; using System.Drawing; using Sy ...
- python selenium+phantomjs alert()弹窗报错
问题:用selenium+phantomjs 模拟登陆,网页用JavaScript的alert("登陆成功")弹出框,但是用switch_to_alert().accept()报错 ...
随机推荐
- JavacProcessingEnvironment类解读
JavacProcessingEnvironment类的继承体系如下: 其中含有很多内部类,最重要的是迭代注解处理器相关的类,如下:
- Root-NFS: Unable to get mountd port number from server, using default
问题描述: 以前下载到开发板linux内核启动好好地,今天突然启动不了了,到达Root-NFS: Unable to get mountd port number from server, using ...
- Centos 安装python3
安装python3 大多数云平台没有安装zlib和openssl的devel包,需要提前安装 下载python源码 cd /home/cheat wget https://www.python.o ...
- Maven可以提交到官方公共仓库maven.org
参考http://central.sonatype.org/pages/ossrh-guide.html这个网址的操作,即可提交到maven.org. 这里有具体的实践方法:http://blog.c ...
- Java接口调用工具类
package com.qiyuan.util; import java.io.BufferedReader; import java.io.IOException; import java.io.I ...
- MD5,SHA1 都是哈希 摘要算法 MD5+SALT BCRYPT
为什么说 MD5 是不可逆的? md5是摘要算法,你学数据结构的时候学过哈希表吧?也有叫散列的.md5就是干那个用的 当然,如果硬要说的话...你可以用md5 hash一段字符串,也算是加密好了,不过 ...
- 前端项目中使用git来做分支和合并分支,管理生产版本
最近由于公司前端团队扩招,虽然小小的三四团队开发,但是也出现了好多问题.最让人揪心的是代码的管理问题:公司最近把版本控制工具从svn升级为git.前端H5组目前对git的使用还不是很熟悉,出现额多次覆 ...
- [BJOI 2018]求和
Description 题库链接 给你一棵 \(n\) 个结点的有根树, \(m\) 次询问这棵树上一段路径上所有节点深度的 \(k\) 次方和. \(1\leq n\leq 300000,1\leq ...
- request:fail 小程序要求的 TLS 版本必须大于等于 1.2
把以下代码复制到txt后,把后缀改成reg扩展名的文件,然后双击运行一下,运行完后重启一下服务器,就可以了. Windows Registry Editor Version 5.00 [HKEY_LO ...
- tcpcopy + tcpdump 离线回放
简单来说,就是用tcpdump记录线上请求,用tcpcopy来重放,如下图所示: 有关 tcpdump 的命令详解请参考: http://www.cnblogs.com/ggjucheng/arc ...