在Python中用Selenium执行JavaScript

Selenium自己不带浏览器, 需要与第三方浏览器结合在一起使用.例如在Firefox上运行Selenium.

PhantomJS是一个"无头"浏览器. 它会把网站加载到内存并执行页面上的JavaScript, 但是它不会向用户展示网页的图形界面. 把Selenium和PhantomJS结合在一起, 就可以运行一个非常强大的网络爬虫了, 可以处理cookie, JavaScript,header, 以及任何你需要做的事.

Selenium可以从PyPI网站(https://pypi.python.org/simple/selenium)下载Selenium库, 也可以用pip安装.

PhantomJS可以从官网下载(http://phantomjs.org/download.html) , PhantomJS不是一个Python库,不能用pip安装.

1 from selenium import webdriver
2 import time
3
4 driver = webdriver.PhantomJS(executable_path=‘ ‘)
5 driver.get("http://pythonscraping.com/pages/javascript/ajaxDemo.html")
6 time.sleep(3)
7 print(driver.find_element_by_id(‘content‘).text)
8 driver.close()

executable_path变量值为phantomjs.exe的路径. 如: executable_path = ‘/download/phantomjs-2.1.1-windows/bin/phantomjs‘

selenium的选择器都是用了非常直截了当的名称, 上面的例子, 也可以用如下的选择器:

driver.find_element_by_css_selector("#content")

driver.find_element_by_tag_name("div")

另外, 如果你还是想用BeautifulSoup来解析网页内容, 可以用WebDriver的page_source函数返回页面的源代码字符串.

1 pageSouce = driver.page_source
2 bsObj = BeautifulSoup(pageSource)
3 print(bsObj.find(id="content").get_text())
时间: 2024-10-29 20:39:27

在Python中用Selenium执行JavaScript的相关文章

Selenium执行Javascript脚本使用参数和返回值

在Selenium中可以使用drvier.execute_script()来执行Javascript脚本,支持多行语句. 使用Javascript可以实现以下功能: 移除元素隐藏.禁用.只读等限制属性 为元素添加id或高亮样式 页面滚动 富文本框输入(HTML注入) 获取页面信息 使用Javascript参数 在使用Javascript语句时,还可以动态传入参数或元素对象,Javascript语句中使用占位符"argument[n]"来表示取第几个参数,如: js = "ar

python使用selenium执行JS快速完成超长字符串的输入

使用selenium的 .send_keys 方法能够满足大多数情况的输入操作,但是在输入内容很多的情况下,使用该方法会消耗很多时间. 此时可以使用selenium执行js的  .innerHTMLf方法快速输入这些内容. 但是使用js的方法有一定缺陷性,它对常见  input标签类型的输入框无效,只对大多数富文本框生效. 非常简单的html界面 <!DOCTYPE html> <html> <head> <meta charset="utf-8&quo

python中用selenium调Firefox报错问题

python在用selenium调Firefox时报错: Traceback (most recent call last):  File "G:\python_work\chapter11\test_selenium_firefox.py", line 10, in <module>    driver = webdriver.Firefox()  File "C:\Python34\lib\site-packages\selenium\webdriver\fi

Python爬虫(二十四)_selenium案例:执行javascript脚本

本章叫介绍如何使用selenium在浏览器中使用js脚本,更多内容请参考:Python学习指南 隐藏百度图片 #-*- coding:utf-8 -*- #本篇将模拟执行javascript语句 from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Chrome() driver.get('https://www.baidu.com/') #给搜索输入框标

爬虫之动态HTML处理(Selenium与PhantomJS )执行 JavaScript 语句

执行 JavaScript 语句 1.隐藏百度图片 from selenium import webdriverimport time driver = webdriver.PhantomJS()driver.get("https://www.baidu.com/") # 给搜索输入框标红的javascript脚本js = "var q=document.getElementById(\"kw\");q.style.border=\"2px so

转:selenium webdriver 执行javascript代码

在用selenium webdriver 编写web页面的自动化测试代码时,可能需要执行一些javascript代码,selenium本身就支持执行js,我们在代码中import org.openqa.selenium.JavascriptExecutor;就可以使用executeScript.executeAsyncScript这两个方法了,其中executeScript是同步方法,用它执行js代码会阻塞主线程执行,直到js代码执行完毕:executeAsyncScript方法是异步方法,它不

python+selenium调用JavaScript

有些浏览器的页面操作,不能依靠WebDriver提供的API来操作,需要借助JavaScript脚本. webdriver提供了execute_script()方法来执行JavaScript代码. from selenium import webdriver import time driver = webdriver.Firefox() driver.get('http://www.baidu.com') driver.set_window_size(800,700) #设置浏览器的宽和高,以

python之selenium调用js(execute_script)

转载: http://www.cnblogs.com/fnng/p/3230768.html 本节重点: 调用js方法 execute_script(script, *args) 在当前窗口/框架 同步执行javaScript 脚本:JavaScript的执行. *参数:适用任何JavaScript脚本. 使用: driver.execute_script('document.title') 使快播登陆用户名输入框标红显示: #coding=utf-8 from selenium import

python在selenium中做自动化测试用法详解

一.环境搭建参考:https://blog.csdn.net/efly2333/article/details/80346426 二.selenium用法详解(https://www.cnblogs.com/themost/p/6900852.html) 1 selenium用法详解 2 selenium主要是用来做自动化测试,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题. 3 模拟浏览器进行网页加载,当requests,urllib无法正常获取网页内容的时候 4 5 一.声明