集搜客网页抓取软件( Python网络爬虫内容提取器)

优采云 发布时间: 2022-04-12 06:28

  集搜客网页抓取软件(

Python网络爬虫内容提取器)

  

  1 简介

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

  2. 动态内容提取技术组件

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

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

  三、源码及实验过程

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

  

  Step 1:利用吉搜科谋数个单元直观的标注功能,可以非常快速的自动生成调试好的抓取规则。其实就是一个标准的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)

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

  

  4. 继续阅读

  至此,我们通过两篇文章文章演示了如何爬取静态和动态网页内容,均使用xslt一次性从网页中提取需要的内容。事实上,xslt 是一种相对复杂的编程语言。如果你手动写xslt,那么最好写成离散的xpath。如果这个xslt不是手工写的,而是程序自动生成的,那是有道理的,程序员也不再需要花时间编写和调试抓取规则,这是一项非常耗时耗力的工作。下一篇《1分钟快速生成网页内容提取的xslt》将介绍如何生成xslt。

  5. Jisouke GooSeeker开源代码下载源

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

  6.文档修改历史

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

  2016-05-29:V2.1,增加第5章:源码下载源码,并替换github源码的URL

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线