抓取ajax动态网页java(Python网络爬虫内容提取器内容)

优采云 发布时间: 2021-10-14 03:16

  抓取ajax动态网页java(Python网络爬虫内容提取器内容)

  本文文章将详细讲解Python爬虫如何使用Selenium+PhantomJS抓取Ajax和动态HTML内容。小编觉得很实用,分享给大家作为参考。希望大家看完这篇文章以后可以有所收获。

  1、简介

  在Python网络爬虫内容提取器一文中,我们详细讲解了核心组件:可插拔内容提取器类gsExtractor。本文记录了在确定gsExtractor技术路线过程中所做的编程实验。这是第二部分。第一部分是使用xslt一次性提取静态网页内容并转换成xml格式的实验。

  2、提取动态内容的技术组件

  上一篇Python使用xslt提取网页数据,提取的内容直接从网页源码中获取。但是有些Ajax动态内容在源码中是找不到的,所以需要找一个合适的库来加载异步或者动态加载的内容,交给本项目的提取器进行提取。

  Python可以使用selenium来执行javascript,selenium可以让浏览器自动加载页面,获取需要的数据。Selenium本身没有浏览器,可以使用Firefox、Chrome等第三方浏览器,也可以使用PhantomJS等无头浏览器在后台执行。

  3、源码和实验过程

  假设我们要抓取京东手机页面的手机名称和价格(网页源码中没有找到价格),如下图:

  

  第一步:利用采集和搜索客户的直观标记功能,可以很快自动生成一个调试好的抓包规则,其实就是一个标准的xslt程序,如下图,将生成的xslt程序复制到下面可以在程序中。注:本文仅记录实验过程。在实际系统中,xslt 程序会以多种方式注入到内容提取器中。

  第二步:执行如下代码(windows10下测试,python3.2,源码下载地址可在文章末尾的GitHub找到),请注意:xslt是比较长的字符串,如果删除这个字符串,代码不是几行,足以展示Python的强大

  #/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人工客服


线