ajax抓取网页内容( Python网络爬虫内容提取器)
优采云 发布时间: 2021-09-16 14:11ajax抓取网页内容(
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网站