python抓取动态网页( python使用xslt提取网页数据中的Ajax或动态html,)

优采云 发布时间: 2022-04-11 16:43

  python抓取动态网页(

python使用xslt提取网页数据中的Ajax或动态html,)

  

  上一篇python使用xslt提取网页数据,要提取的内容是直接从网页的源码中获取的。

  但是对于一些Ajax或者动态html来说,要提取的内容在源代码中往往是找不到的。在这种情况下,必须找到一种方法来提取异步或动态加载的内容。

  可以在python中使用selenium来执行javascript,selenium可以让浏览器自动加载页面并获取需要的数据。

  Selenium没有自带浏览器,可以使用第三方浏览器如Firefox、Chrome等,也可以使用PhantomJS等无头浏览器在后台执行。

  比如我们要抓取京东手机页面的手机名和价格(网页源码中找不到价格)

  

  第一步:在几搜科谋几个控制台上通过图形界面快速生成xslt

  

  第二步:执行以下代码(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)

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

  

  Python爬虫使用Selenium+PhantomJS爬取Ajax和动态HTML内容

  原文:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线