js抓取网页内容(安装LinuxWindows原理关于SeleniumSelenium的运行结果,你了解多少?)

优采云 发布时间: 2021-10-20 01:14

  js抓取网页内容(安装LinuxWindows原理关于SeleniumSelenium的运行结果,你了解多少?)

  文章内容

  之前抓到一个爬虫代理网站,发现自己在端口上做了一些小动作,比如用JS计算端口。只是这样的改变让我苦苦思索。虽然用最笨的方法也能实现,但是太麻烦,代码量太大。有种操作吊车抽牌的感觉。最后想到了Selenium方法。速度虽然慢了点,但还是可以轻松搞定的。

  安装 Linux

  sudo pip install selenium

sudo apt-get install PhantomJS

  关于 Selenium 的 Windows 原则

  Selenium是一个web自动化测试工具,可以在多个平台上操作多个浏览器来执行各种动作,比如运行浏览器、访问页面、点击按钮、提交表单、调整浏览器窗口、鼠标右键、拖拽. 下拉框、对话框处理等,可以说是QA自动化测试必不可少的工具。我们在爬取的时候选择它,主要是因为Selenium可以渲染页面,在页面中运行JS,点击按钮,提交表单等操作。但是仅仅因为Selenium会渲染页面,会比requests+BeautifulSoup慢。

  关于 PhantomJs

  PhantomJs 可以看作是一个没有页面的浏览器,有一个渲染引擎(QtWebkit)和一个 JS 引擎(JavascriptCore)。PhantomJs具有DOM渲染、JS运行、网络访问、网页截图等多种功能。

  使用 PhantomJS 而不是 Chromedriver 和 firefox,主要是因为 PhantomJS 的静音模式(在后台运行,无需打开浏览器)。

  抓取示例大锤测验-抓取标题

  让我们先尝试一个简单的例子。以前这类内容一般都是用requests+BeautifulSoup或者Scrapy来处理的。

  from selenium import webdriver browser = webdriver.PhantomJS('D:phantomjs.exe') #浏览器初始化;Win下需要设置phantomjs路径,linux下置空即可

url = 'http://www.zhidaow.com' # 设置访问路径

browser.get(url) # 打开网页

title = browser.find_elements_by_xpath('//h2') # 用xpath获取元素

for t in title: # 遍历输出

    print t.text # 输出其中文本

    print t.get_attribute('class') # 输出属性值

browser.quit() # 关闭浏览器。当出现异常时记得在任务浏览器中关闭PhantomJS,因为会有多个PhantomJS在运行状态,影响电脑性能

  以下是本次测试的结果:

  

  捕获 爱站 流量

  爱站在网站(eg)的综合查询首页,历史流量部分采用JS的形式。抓取这部分数据,requests+BeautifulSoup 没有效果,这就是Selenium+PhantomJS 的优势。

  这是代码:

  from selenium import webdriver browser = webdriver.PhantomJS('D:phantomjs.exe')

url = 'http://www.aizhan.com/siteall/tuniu.com/'

browser.get(url)

table = browser.find_elements_by_xpath('//*[@id="history1"]/table/tbody/tr[1]') # 用Xpath获取table元素

for t in table:

    print t.text

rowser.quit()

  操作结果:

  2015-09-24 3534 – – – –

  其他功能参考说明

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线