vba 网页数据抓取(Python网络爬虫内容提取器一文项目启动说明(一))
优采云 发布时间: 2022-02-23 19:13vba 网页数据抓取(Python网络爬虫内容提取器一文项目启动说明(一))
1、简介
在 Python 网络爬虫内容提取器一文中,我们详细讲解了核心组件:可插拔内容提取器类 gsExtractor。本文记录了在确定gsExtractor技术路线过程中所做的编程实验。这是第一部分,尝试使用xslt方法提取静态网页内容并一次性转换为xml格式。
2、使用lxml库提取网页内容
lxml是python的一个库,可以快速灵活地处理XML。它支持 XML 路径语言 (XPath) 和可扩展样式表语言转换 (XSLT),并实现通用的 ElementTree API。
这2天,我在python中测试了通过xslt提取网页内容,记录如下:
2.1、抓住目标
假设要提取jisoke官网老论坛的帖子标题和回复数,如下图,需要提取整个列表并保存为xml格式
2.2、源码1:只抓取当前页面,结果显示在控制台
Python的优势在于它可以用少量的代码解决一个问题。请注意,以下代码看起来很长。其实python函数调用的并不多,一个xslt脚本占用了大量的空间。在这段代码中,只有它只是一个长字符串。至于为什么选择 xslt 而不是离散的 xpath 或者令人头疼的正则表达式,请参考《Python Instant Web Crawler Project Startup Instructions》,我们希望通过这种架构,程序员的时间节省一半以上。
可以复制并运行以下代码(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的代码进行了进一步的修改,增加了翻页功能来获取和保存结果文件。代码如下:
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 < 12):
url = baseurl + "?page=" + str(count)
conn = request.urlopen(url)
doc = etree.HTML(conn.read())
transform = etree.XSLT(xslt_root)
result_tree = transform(doc)
print(str(result_tree))
file_obj = open(basefilebegin+str(count)+basefileend,'w',encoding='UTF-8')
file_obj.write(str(result_tree))
file_obj.close()
count += 1
time.sleep(2)
我们添加了编写文件的代码,还添加了一个循环来构造每次翻页的URL,但是如果在翻页过程中URL始终相同怎么办?实际上,这是动态的网页内容,下面将进行讨论。
3、总结
这是开源Python通用爬虫项目的验证过程。在爬虫框架中,其他部分很容易通用化,也就是很难将网页内容提取并转化为结构化操作,我们称之为提取器。但是在GooSeeker的可视化抽取规则*敏*感*词*MS的帮助下,抽取器的生成过程会变得非常方便,并且插入可以标准化,从而实现一个万能爬虫。后续文章会专门讲解MS。平台配合Python的具体方法。
4、继续阅读
本文介绍的方法通常用于爬取静态网页内容,也就是所谓的html文档的内容。目前很多网站内容都是通过javascript动态生成的。一开始html是没有这个内容的,通过后会加载。如果添加了方法,那么需要用到动态技术,请阅读《Python爬虫使用Selenium+PhantomJS爬取Ajax和动态HTML内容》
5、Jisooke GooSeeker开源代码下载源码
1.GooSeeker开源Python网络爬虫GitHub源码
6、文档修改历史
2016-05-26:V2.0,增加文字说明;添加了线程的代码
2016-05-29:V2.1、添加最后一章源码下载源码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持ASPKU源码库。
注:相关教程知识请移步python教程频道。