Jayson

老牛亦解韶光贵,不等扬鞭自奋蹄。

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

 

posted on 2017-08-12 15:22  jaysoncho  阅读(3532)  评论(0编辑  收藏  举报