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

优采云 发布时间: 2021-09-16 14:11

  ajax抓取网页内容(

Python网络爬虫内容提取器)

  

  一,。导言

  在PythonWebCrawler内容提取器文章中,我们详细解释了核心组件:可插入内容提取器类gsextractor。本文记录了在确定GSR萃取器工艺路线过程中的程序设计实验。这是第二部分。在第一部分中,实验使用XSLT一次性提取静态网页内容并将其转换为XML格式。这就留下了一个问题:如何提取JavaScript管理的动态内容?然后本文回答了这个问题

  二,。用于提取动态内容的技术组件

  在上一篇文章中,python使用XSLT提取网页数据。要提取的内容直接从网页的源代码中获取。但是,有些Ajax动态内容在源代码中找不到,因此有必要找到适当的库来加载异步或动态加载的内容,并将其交给项目的提取器进行提取

  Python可以使用selenium执行JavaScript,selenium可以让浏览器自动加载页面并获取所需数据。Selenium没有浏览器。它可以使用第三方浏览器(如Firefox和chrome)或无头浏览器(如phantom JS)在后台执行

  三,。源代码和实验过程

  如果我们想抓取京东手机页面的手机名称和价格(在网络源代码中找不到价格),如下图所示:

  

  步骤1:使用jisou customer search的可视化注释功能,可以以非常快的速度自动生成已调试的捕获规则。事实上,它是一个标准的XSLT程序。如下图所示,将生成的XSLT程序复制到以下程序。注:本文仅记录实验过程。在实际系统中,XSLT程序将以多种方式注入到内容提取器中

  

  步骤2:执行以下代码(在Windows 10中,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)

  步骤3:您可以看到网页中的手机名称和价格已被正确捕获

  

  4.下一读

  到目前为止,通过两个文章演示如何捕获静态和动态网页内容,我们使用XSLT一次性从网页中提取所需内容。事实上,XSLT是一种相对复杂的编程语言。如果手动编写XSLT,也可以将其编写为离散XPath。如果XSLT不是手动编写的,但是由程序自动生成是有意义的。程序员不应该再花时间编写和调整捕获规则,这是一项耗时费力的工作。下一篇文章“1分钟快速生成用于网页内容提取的XSLT”将介绍如何生成XSLT

  5.jiscokegooseker开源代码下载源码

  1.GooSeeker开源Python web爬虫GitHub源代码

  6.文件修改历史记录

  2016-05-26:V2.0,补充文字说明

  2016-05-29:V2.1.添加第5章:下载源代码,更改GitHub source网站

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线