Python网络爬虫内容提取器类gsExtractor的技术路线过程分析
优采云 发布时间: 2021-07-21 00:18Python网络爬虫内容提取器类gsExtractor的技术路线过程分析
1、介绍
在Python网络爬虫内容提取器一文中,我们详细讲解了核心组件:可插拔内容提取器类gsExtractor。本文记录了在确定gsExtractor技术路线过程中所做的编程实验。这是第一部分。使用xslt一次性提取静态网页内容并转换为xml格式的实验。
2.使用 lxml 库提取网页内容
lxml 是一个 Python 库,可以快速灵活地处理 XML。它支持 XML 路径语言 (XPath) 和可扩展样式表语言转换 (XSLT),并实现了通用的 ElementTree API。
这两天在python中测试了通过xslt提取网页内容,记录如下:
2.1,抓取目标
假设你想在吉首官网提取旧版论坛的帖子标题和回复数,如下图,提取整个列表并保存为xml格式
2.2,源码1:只抓取当前页面,结果会在控制台显示
Python 的优势在于它可以用少量的代码解决一个问题。请注意,以下代码看起来很长。其实python函数调用并不多。大空间由 xslt 脚本占用。在这段代码中,它只是一个长字符串。至于为什么选择xslt而不是离散xpath或者scratching正则表达式,请参考Python即时网络爬虫项目的启动说明。我们希望通过这种架构,程序员的时间可以节省一半以上。
可以复制以下代码运行(windows10下测试,python3.2):
from urllib import request
from lxml import etree
url="http://www.gooseeker.com/cn/forum/7"
conn = request.urlopen(url)
doc = etree.HTML(conn.read())
xslt_root = etree.XML("""\
""")
transform = etree.XSLT(xslt_root)
result_tree = transform(doc)
print(result_tree)
源码下载地址见文章末尾的GitHub源码。
2.3,抢结果
获取的结果如下:
2.4,源码2:逐页获取,结果存入文件
我们对2.2的代码做了进一步的修改,增加了翻页和抓取保存结果文件的功能,代码如下:
<p>from urllib import request
from lxml import etree
import time
xslt_root = etree.XML("""\
""")
baseurl = "http://www.gooseeker.com/cn/forum/7"
basefilebegin = "jsk_bbs_"
basefileend = ".xml"
count = 1
while (count