在Python中用Selenium执行JavaScript

狂风中的少年 提交于 2020-03-24 08:36:53

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())

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!