python抓取动态网页( python使用xslt提取网页数据中的Ajax或动态html,)
优采云 发布时间: 2022-04-11 16:43python抓取动态网页(
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内容
原文: