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

优采云 发布时间: 2021-09-08 22:08

  ajax抓取网页内容(

Python网络爬虫内容提取器)

  

  1、介绍

  在Python网络爬虫内容提取器一文中,我们详细讲解了核心组件:可插拔内容提取器类gsExtractor。本文记录了在确定gsExtractor技术路线过程中所做的编程实验。这是第二部分。第一部分是使用xslt一次性提取静态网页内容并转换成xml格式的实验。这就留下了一个问题:如何提取javascript管理的动态内容?那么这篇文章就回答了这个问题。

  2.提取动态内容的技术成分

  在上一篇python使用xslt提取网页数据的文章中,提取的内容是直接从网页源代码中获取的。但是部分Ajax动态内容在源码中找不到,需要找一个合适的库来加载异步或动态加载的内容,交给本项目的提取器提取。

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

  3、源代码及实验过程

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

  

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

  

  第2步:执行如下代码(windows10下测试,python3.2,源码下载地址文章end 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)

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

  

  4、阅读下一个

  到目前为止,我们已经通过两篇文章 文章演示了如何抓取静态和动态网页内容。两者都使用 xslt 一次从网页中提取所需的内容。实际上,xslt 是一种更复杂的编程语言。写xslt,那么最好写离散xpath。如果这个xslt不是手工写的,而是程序自动生成的,这就有意义了,程序员就不用再花时间编写和调试爬虫规则了。这是一项非常费时费力的工作。下一篇《1分钟快速生成用于网页内容提取的Xslt》将介绍如何生成xslt。

  5、汇聚GooSeeker开源代码下载源码

  1.GooSeeker 开源 Python 网络爬虫 GitHub 源码

  6、文档修改历史

  2016-05-26:V2.0,添加文字说明

  2016-05-29:V2.1,增加第五章:源码下载源码,修改github源码地址

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线