一、Selenium

Selenium是一个用于Web应用程序测试的工具,它可以在各种浏览器中运行,包括Chrome,Safari,Firefox 等主流界面式浏览器。

我们可以直接用pip install selenium来进行安装。

中文翻译文档:https://selenium-python-zh.readthedocs.io/en/latest/index.html

官方文档:https://selenium-python.readthedocs.io/

二、Headless Chrome

Headless Chrome是Chrome浏览器提供的无界面形态,可以在不打开浏览器的前提下,使用所有 Chrome 支持的特性运行你的程序。相比于现代浏览器,Headless Chrome 更加方便测试 web 应用,获得网站的截图,做爬虫抓取信息等。相比于出道较早的 PhantomJS,SlimerJS 等,Headless Chrome 则更加贴近浏览器环境。

我们可以在http://chromedriver.chromium.org/(此网站需要翻墙)或者http://chromedriver.storage.googleapis.com/index.html下载对应Chrome浏览器版本的chrome driver。

需要注意的是mac和linux环境要求chrome版本是59+,而windows版本的chrome要求是60+。下载成后把chromedriver.exe复制到Python安装路径下的Scripts目录中。

更详细的资料可以查看Headless Chrome官方文档

三、使用Selenium + Headless Chrome

实例一:初步使用

from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
#设置无界面模式
chrome_options.add_argument("--headless")
#禁用gpu
chrome_options.add_argument("--disable-gpu")
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get('https://www.baidu.com/')
print('打开浏览器')
print(driver.title)
driver.find_element_by_id('kw').send_keys('测试')
print('关闭')
driver.quit()
print('测试完成')

实例二:模拟在淘宝上搜索

from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--disable-gpu")
browser = webdriver.Chrome(options=chrome_options) browser.get("http://www.taobao.com")
input_str = browser.find_element_by_id('q')
#在搜索栏输入字符
input_str.send_keys("衬衣")
#等待一秒
browser.implicitly_wait(1)
#清空搜索栏
input_str.clear()
input_str.send_keys("裤子")
#寻找搜索按钮
button = browser.find_element_by_xpath('//*[@id="J_TSearchForm"]/div[1]/button')
button.click()
#退出
browser.quit()

实例三:爬取包含Ajax的动态网页数据

from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--disable-gpu")
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("http://pythonscraping.com/pages/javascript/ajaxDemo.html")
# driver.page_source
driver.implicitly_wait(3)
print(driver.find_element_by_id("content").text)
driver.close()

注意driver.quit()是退出驱动并关闭所有窗口,而driver.close()是关闭当前窗口。当只有一个窗口时,两者结果是一样的。

最新文章

  1. bzoj 2756奇怪的游戏
  2. 【转】对抗拖库 ―― Web 前端慢加密
  3. 划分树---Feed the dogs
  4. TYVJ P1088 treat Label:鞭笞人的DP
  5. 20150515--关于IIS的备忘(WIN7)
  6. 将iOS中Safari 的默认搜索引擎由google.cn改为google.com的方法
  7. StringBuilder和StringBuffer
  8. Git教程之多人协作
  9. VC多线程编程
  10. 编写高效的jQuery代码
  11. ajax数据请求4(xml格式)
  12. java web Cookie浅谈
  13. JavaScript获取浏览器版本等信息
  14. js各种继承方式汇总
  15. Win32 API之绘图函数
  16. jmeter学习记录--04--Beanshell
  17. iPhone8再MacOS上修改手机铃声
  18. mongodb 设置权限
  19. File类_常见的方法(获取,创建与删除,判断,重命名)
  20. centos7安装zabbix3.4

热门文章

  1. Java笔记 - Socket编程
  2. windows api(GDI)实现图片旋转
  3. mavlink 笔记1
  4. PAT甲级——A1109 Group Photo【25】
  5. Java 10的10个新特性,将彻底改变你写代码的方式!
  6. 【转载】flex布局超过显示省略号
  7. <小知识>记录
  8. 面试系列16 redis的持久化
  9. TortoiseGit可能遇到Permission denied (publickey).
  10. LeetCode 21. 合并两个有序链表(Python)