python中selenium中使用ajax_Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容(示例代码)...

lazy.gif

在上一篇python使用xslt提取网页数据中,要提取的内容是直接从网页的source code里拿到的。但是对于一些Ajax或动态html, 很多时候要提取的内容是在source code找不到的,这种情况就要想办法把异步或动态加载的内容提取出来。python中可以使用selenium执行javascript,selenium可以让浏览器自动加载页面,获取需要的数据。selenium自己不带浏览器,可以使用第三方浏览器如Firefox, Chrome等,也可以使用headless浏览器如PhantomJS在后台执行。例如我们要抓取京东手机页面的手机名称和价格(价格在网页源码是找不到的)

lazy.gif

第一步:在集搜客谋数台上,通过图形界面快速的生成xslt

lazy.gif

第二步:执行如下代码(在windows10, python3.2下测试通过);#/usr/bin/python

from urllib import request

from lxml import etree

from selenium import webdriver

import time

# 京东手机商品页面

url="http://item.jd.com/1312640.html"

# 下面的xslt是通过集搜客的谋数台图形界面自动生成的

xslt_root = etree.XML("""

<商品>

商品>

<价格>

价格>

<名称>

名称>

""")

# 使用webdriver.PhantomJS

browser=webdriver.PhantomJS(executable_path=‘C:\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe‘)

browser.get(url)

time.sleep(3)

transform = etree.XSLT(xslt_root)

# 执行js得到整个dom

html = browser.execute_script("return document.documentElement.outerHTML")

doc = etree.HTML(html)

# 用xslt从dom中提取需要的字段

result_tree = transform(doc)

print(result_tree)

第三步:可以看到,网页中的手机名称和价格被正确抓取下来了。

lazy.gif

本文出自 “fullerhua的博客” 博客,谢绝转载!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值