python抓取动态网页( Python网络爬虫可插拔的内容提取器)

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

  python抓取动态网页(

Python网络爬虫可插拔的内容提取器)

  

  一,。导言

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

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

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

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

  三,。源代码和实验过程

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

  

  蟒蛇

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

  

  吉特

  步骤2:执行以下代码(在Windows 10中,python3.2),请注意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:如下图所示,网页中的手机名称和价格已被正确捕获

  

  github

  四,。下次阅读

  到目前为止,在两次文章演示如何捕获静态和动态网页内容之后,我们都使用XSLT一次性从网页中提取所需内容。事实上,XSLT是一种更复杂的编程语言。如果XSLT是手动编写的,那么最好将其编写为离散XPath。如果XSLT不是手动编写的,而是由程序自动生成的,那么它是有意义的。程序员不再需要花时间编写和调整捕获规则,这是一项费时费力的工作。接下来,“1分钟快速生成用于网页内容提取的XSLT”将描述如何生成XSLT。网

  五,。Jisoke gooseeker开源代码下载源代码

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

  五,。文档修改历史记录

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

  2016-05-29:V2.1. 增加第5章:下载源代码并更改GitHub网站源代码段错误

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线