解决方案:WEB信息发布的“自动采集”方案的研究
优采云 发布时间: 2022-12-01 09:34解决方案:WEB信息发布的“自动采集”方案的研究
WEB信息发布“自动采集”方案研究总结:目前大多数网站在发布信息时采用类似“留言板”的形式,即由某个人在特定的WEB页面发布的信息。负责发布信息 输入一个输入窗口,然后提交到数据库,在网站上发布——信息只能一条一条添加,效率低下。这里作者提出了用程序自动采集信息的思路,并给出了详细的解决方案。关键词:WEB信息发布、逐项添加、自动采集 1、提出问题 现在互联网已经普及,很多单位都有自己的网站。通常,网站上会发布一些信息,一般以后台数据库的形式存在。目前,大多数网站在发布信息时采用类似“留言板”的形式,即由负责发布信息的人员将要发布的信息输入到特定WEB页面的输入窗口中,然后提交到数据库中对于在网站上发布的信息,只能逐项添加。现实中,一个单位可能有多个部门要在网上发布信息,但既然“网站”是一种媒体,单位不会也不应该让每个部门自己在网站上发布信息. 通常的做法是:先让每个部门把要发布的信息汇总到一个“审核部门”,部门将逐一审核并集中发布。在这种情况下,审查部门将有更多的信息发布。如果采用上述“一项一项添加”的方式,效率会很低。而且,手动将文本复制粘贴到WEB页面的输入窗口中——人工操作很容易出错。
——这是问题一。另外,采用上述方法,只能发布纯文本信息。当有图文并茂的信息要发布时,往往需要找专业人士将原创
信息制作成网页,然后发布到网上。但这样一来,就很难对图文信息和纯文本信息进行统一的访问管理(如:全文检索、信息删除)——这是第二个问题。2、初步想法我们的想法是:写一个驻留程序,让它长期运行在某台电脑(一般是服务器)上,按照一定的周期,定时的检索指定目录下要发布的信息,并保存它们的类别被附加到数据库中。详情请参考以下方案(如:<图1>):(注:现实中FTP服务器、数据库服务器和WEB服务器可以用一台物理机实现,这里引用三台功能独立的服务器,只是为了方便描述工作流程。) 信息发布者将要发布的信息以文档的形式上传到FTP服务器的分类目录中。FTP服务器上的驻留程序定期将获取的信息分类存入数据库服务器;信息访问访问者通过浏览器向WEB服务器申请信息;WEB服务器根据访问者的申请向数据库服务器申请数据;数据库服务器根据WEB服务器的应用,将数据反馈给WEB服务器;服务器将提取的数据组织成WEB页面的形式反馈给访问者的浏览器。FTPWEB数据库 PC信息提供者 PC信息访问者 3.实现 显然,关键在于“常驻程序”。
" />
考虑到它需要完成的工作,首先设计数据库结构。1. 数据库设计 让我们来看看通常采集
哪些信息。它们通常包括:标题、正文、发布部门、发布形式、发布日期等。因为数据源是文件,所以文件名可以作为“标题”(这也符合日常习惯)。文本信息包括纯文本信息和带有图形和表格的信息。具体处理方案将在下篇“详解”中详细说明。关于“出版部门”和“出版形式”的信息来源,我们是这样解决的:制定一个目录作为存放信息来源的根目录,并在该目录下为所有需要发布信息的院系建立院系名称子目录,我们称之为“一级子目录”(假设用户是学校,一级子目录可能包括“教务处”) ,“校办”,“教研室”等),在一级子目录下,再根据可能使用的信息发布形式的名称建立“二级子目录”(例如:“新闻”、“通知”、“公告”等)。(例:<图2>)这样,如果某个部门要发布某种形式的信息,只需将信息文件放在相应的目录下即可,只需要将收录
通知内容的文件命名为“期末考试安排”,上传至“院长办公室”目录下的“通知”目录即可。同时,该方法还可以方便直观地对“出版部门”和“出版形式”进行增删改查。
“发布日期”很容易获得。可以是信息采集到数据库的日期,也可以是信息文件生成的日期。这样数据库就需要有“标题”、“正文”、“发行部门”、“发行形式”、“发行日期”等字段。当然也可以根据需要增加一些字段,比如:“序列号”,作为数据库的唯一索引,用来区分不同的信息(这个字段很有用,后面会提到);“是否为新信息”用于标识信息的新旧程度;“是否置顶”用于识别该信息是否在一般信息之前展示过等。2. 详细说明 常驻程序定期检索“二级目录”中的所有文件,并将需要的信息采集
到数据库中。先说纯文本信息。首先,它们以文本文件的形式存在;然后,在“标题”字段中填写文本文件的文件名(不带文件扩展名);填写“签发部门”和“签发表格”字段;选择当前日期,或在“Issuing Date”字段中填写文件生成日期;接下来,有两种方法可以处理“文本”字段。一种方式:直接使用文本文件的文本作为“文本”字段的内容。这种方式驻留程序的工作非常简单,但是由于数据是由WEB服务器添加到网页中,浏览器将根据 HTML 语法对其进行解释。进行转换(例如:如果您希望访问者在浏览器中看到“大于”符号,即“>”,则需要将“>”转换为“>”)。
" />
这样,只需要在网页中额外添加一段脚本就可以实现这种转换。我们不推荐这种方式,因为每次访问信息都要执行这个脚本,会增加WEB服务器的负担。下面的方法是我们推荐的:常驻程序将文本文件的文本转换为HTML,作为“文本”字段的内容。其实就是把前面方法中在网页中添加的脚本的工作放到常驻程序中去实现。这样每条信息只需要进行一次转换,制作网页时只需要直接引用“文本”字段,也减轻了WEB服务器的负担。至此,我们只解决了纯文本信息的采集。对于用图表采集
信息,我们考虑这种方式。由于带有图文表格的信息一般都是用Microsoft Word和EXCEL编辑的,这两个软件都具有将WORD和EXCEL文档保存为WEB页面的功能。我们要求用户先将图表的WORD和EXCEL文档保存为WEB页面,然后将生成的HTML文档和资源文件夹一起上传到FTP服务器。当常驻程序处理这些信息时,它必须做两件事。1)HTML文档(以下简称“正文”)中“”到“”(不包括“””)部分作为“正文”字段的内容。这里需要注意的是,因为WORD和EXCEL生成的HTML文档中的排版格式都是用“样式”设置的,而引用时不需要这些样式,所以“正文”中的“样式”也必须收录
. 删除所有部分。
2)将“资源文件夹”移动到与引用它的WEB页面相同的目录下。这里还要注意一个问题,就是“资源文件夹”可能重名,这就需要用到我们前面讲到的“序列号”字段。因为“序列号”对于每条信息都是唯一的,我们可以将“资源文件夹”的名称改为“序列号”字段的内容来保证其唯一性(当然要修改“资源文件夹”的名称文件夹”,还需要修改原在“正文正文”中引用的“资源文件夹”中的资源路径)至此,我们就解决了采集
两类信息的问题。4. 总结与补充 经过一段时间的推广,我发现“ 非常欢迎有兴趣的朋友参与我们的研究,使这个程序更加完善。注:本文完全原创,不存在任何引用
解决方案:干货 | 33款可用来抓数据的开源爬虫软件工具
这个项目还很不成熟,但是功能已经基本完成了。要求用户熟悉 XML 和正则表达式。目前这个工具可以抓取各种论坛,贴吧,各种CMS系统。Discuz!、phpbb、论坛和博客等文章可以通过此工具轻松抓取。抓取定义完全采用 XML 格式,适合 Java 开发人员。
使用方法,1.下载右边的.war包导入eclipse,2.使用WebContent/sql下的wcc.sql文件创建示例数据库,3.修改wcc.core下的dbConfig.txt src包,修改用户名,设置密码和密码为自己的mysql用户名和密码。4、然后运行SystemCore,运行时会在控制台,不带参数会执行默认的example.xml配置文件,name是带参数时的配置文件名。
系统自带3个例子,baidu.xml抓取百度知乎,example.xml抓取我的javaeye博客,bbs.xml抓取一个discuz论坛内容。
12. 蜘蛛侠
Spiderman是一款基于微内核+插件架构的网络蜘蛛。它的目标是通过简单的方式将复杂的目标网页信息捕获并解析为它需要的业务数据。
如何使用?
首先,确定你的目标网站和目标网页(就是你要获取数据的某类网页,比如网易新闻的新闻页面)
然后,打开目标页面,分析页面的HTML结构,得到想要的数据的XPath。请参阅下文了解如何获取 XPath。
最后在一个xml配置文件中填入参数,运行Spiderman!
13. 网页魔术
webmagic是一款无需配置,方便二次开发的爬虫框架。它提供简单灵活的API,只需少量代码即可实现爬虫。
webmagic采用完全模块化设计,功能覆盖爬虫全生命周期(链接提取、页面下载、内容提取、持久化),支持多线程爬取、分布式爬取,支持自动重试、自定义UA/Cookies等功能.
Webmagic 收录
强大的页面提取功能。开发者可以方便地使用css选择器、xpath和正则表达式提取链接和内容,支持多个选择器链调用。
使用 webmagic 的文档:
查看源代码:
14. 网络收获
Web-Harvest 是一个 Java 开源的 Web 数据提取工具。它可以采集
指定的网页并从这些网页中提取有用的数据。Web-Harvest主要使用XSLT、XQuery、正则表达式等技术实现对text/xml的操作。
实现原理是利用httpclient根据预定义的配置文件获取页面的所有内容(httpclient的内容在本博客的一些文章中已有介绍),然后利用XPath、XQuery、正则表达式等技术进行执行 text/xml 内容过滤操作以选择准确的数据。近两年流行的垂直搜索(如:酷讯等)也是采用类似原理实现的。对于Web-Harvest应用来说,关键是理解和定义配置文件,另一个是考虑如何处理数据的Java代码。当然,在爬虫启动之前,也可以在配置文件中填充Java变量,实现动态配置。
15. 网络狮身人面像
WebSPHINX 是 Java 类包和网络爬虫的交互式开发环境。网络爬虫(也称为机器人或蜘蛛)是可以自动浏览和处理网页的程序。WebSPHINX 由两部分组成:爬虫工作平台和WebSPHINX 类包。
16. 雅西
YaCy 是一个基于 p2p 的分布式网络搜索引擎。它也是一个Http缓存代理服务器。该项目是一种构建基于 p2p 的网络索引网络的新方法。它可以搜索你自己的或者全局的索引,或者爬取你自己的网页或者开始分布式爬取等。
蟒蛇爬虫
17. 快速侦察
QuickRecon 是一个简单的信息采集
工具,可帮助您查找子域名、执行区域传输、采集
电子邮件地址、使用微格式查找关系等。QuickRecon 是用 python 编写的,同时支持 linux 和 windows 操作系统。
18. 铁轨炮
这是一个非常简单易用的刮板。一个简单实用高效的python网络爬虫爬虫模块,支持爬取javascript渲染的页面
#自述文件
19. 碎片化
Scrapy是一套基于Twisted的异步处理框架和纯python实现的爬虫框架。用户只需要自定义开发几个模块就可以轻松实现一个爬虫,用来抓取网页内容和各种图片,非常方便~
" />
C++爬虫
20. 小蜘蛛
HiSpider 是一种快速且高性能的爬虫,具有很高的速度
严格来说只能是蜘蛛系统的框架,并没有具体的要求。目前只能提取URL,URL去重,异步DNS解析,队列任务,支持N机分布式下载,支持网站定向下载(需要配置hispiderd.ini白名单)。
特点及用途:
工作过程:
从中心节点获取URL(包括URL对应的任务号、IP和端口,可能还需要自己解析)
连接到服务器发送请求
等待数据头判断是否需要数据(目前主要取文本类型的数据)
等待数据完成(有length header的直接等待表示长度的数据,否则等待一个比较大的数然后设置超时)
当数据完成或超时时,zlib 将数据压缩并返回给中央服务器。数据可能包括自己解析的DNS信息,压缩数据长度+压缩数据。如果有错误,将直接返回任务编号和相关信息。
中央服务器接收带有任务号的数据,并检查是否收录
该数据。如果没有数据,直接将任务号对应的状态设置为error。如果有数据,提取数据类型链接,将数据存入文档文件。
完成后返回一个新任务。
21.拉宾
larbin 是由法国青年Sébastien Ailleret 独立开发的开源网络爬虫/网络蜘蛛。larbin的目的是为了能够跟踪页面的url进行扩展爬取,最终为搜索引擎提供广泛的数据源。Larbin 只是一个爬虫,也就是说,larbin 只爬取网页,由用户来做解析。另外larbin也没有提供如何在数据库中存储和创建索引。一个简单的 larbin 爬虫每天可以抓取 500 万个网页。
使用larbin,我们可以轻松获取/确定单个网站的所有链接,甚至镜像一个网站;我们也可以用它来创建一个url列表组,比如对所有网页进行url retrive后,获取xml链接。或 mp3,或定制的 larbin,可用作搜索引擎的信息来源。
22.美沙机器人
Methabot 是一款针对 WEB、FTP 和本地文件系统的速度优化和高度可配置的爬虫软件。
C#爬虫
23. NWeb 爬虫
NWebCrawler 是一个开源的、C# 开发的网络爬虫程序。
特征:
可配置:线程数、等待时间、连接超时、允许的 MIME 类型和优先级、下载文件夹。
统计数据:URL 数量、下载文件总数、下载字节总数、CPU 使用率和可用内存。
优先爬虫:用户可以设置优先MIME类型。
健壮:10+ URL规范化规则,爬虫陷阱规避规则。
24.西诺勒
国内第一款微博数据爬虫程序!原名“新浪微博爬虫”。
登录后,可以指定用户为切入点,以用户的关注、粉丝为线索,顺着网络关系采集
用户的基本信息、微博数据、评论数据。
本应用所获取的数据可作为科学研究、新浪微博相关研发等方面的数据支持,但请勿用于商业用途。应用程序基于.NET2.0框架,需要SQL SERVER作为后台数据库,提供SQL Server的数据库脚本文件。
另外由于新浪微博API的限制,爬取到的数据可能不完整(比如获取粉丝数限制,获取微博条数限制等)。
本程序版权归作者所有。您可以自由地:复制、分发、展示和表演当前的作品,以及制作衍生作品。您不得将当前作品用于商业目的。
5.x 版本已经发布!本版本共有6个后台工作线程:爬取用户基本信息机器人、爬取用户关系机器人、爬取用户标签机器人、爬取微博内容机器人、爬取微博评论机器人、调整请求机器人的频率。性能更高!最大限度地发挥爬虫的潜力!从目前的测试结果来看,个人使用已经足够了。
" />
这个程序的特点:
6个后台工作线程,最大限度地发挥爬虫的性能潜力!
界面提供参数设置,灵活方便
抛弃app.config配置文件,自行实现配置信息的加密存储,保护数据库账号信息
自动调整请求频率,防止超限,也避免速度变慢降低效率
任意控制爬虫,可以随时暂停、继续、停止爬虫
良好的用户体验
25.蜘蛛网
Spidernet 是一个以递归树为模型的多线程网络爬虫程序。支持获取text/html资源。可以设置爬取深度,限制最大下载字节数,支持gzip解码,支持gbk(gb2312)和utf8编码资源;存储在sqlite数据文件中。
源码中的TODO:标签描述了未完成的功能,希望提交你的代码。
26. 网络爬虫
mart and Simple Web Crawler 是一个网络爬虫框架。集成的 Lucene 支持。爬虫可以从单个链接或链接数组开始,提供两种遍历模式:最大迭代次数和最大深度。可以设置过滤器来限制爬回的链接。默认情况下,提供了三个过滤器:ServerFilter、BeginningPathFilter 和 RegularExpressionFilter。这三个过滤器可以与 AND、OR 和 NOT 结合使用。可以在解析过程中或页面加载前后添加*敏*感*词*器。介绍内容来自Open-Open
27.网络矿工
网站数据采集
软件网络矿工采集
器(原soukey picking)
Soukey picking网站数据采集软件是一款基于.Net平台的开源软件,也是目前同类网站数据采集软件中唯一一款开源的软件。Soukey虽然选择了开源,但并不影响软件功能的提供,甚至比一些商业软件还要丰富。
PHP爬虫
28. 打开网络蜘蛛
OpenWebSpider是一个开源的多线程Web Spider(robot:机器人,crawler:爬虫)和一个收录
许多有趣功能的搜索引擎。
29. PhpDig
PhpDig 是一个用 PHP 开发的网络爬虫和搜索引擎。通过索引动态和静态页面来构建词汇表。当搜索查询时,它会以一定的排序顺序显示收录
关键字的搜索结果页面。PhpDig 包括一个模板系统,可以索引 PDF、Word、Excel 和 PowerPoint 文档。PHPdig适用于更专业、更深入的个性化搜索引擎,用它来构建某个领域的垂直搜索引擎是最佳选择。
30.想想
ThinkUp 是一个社交媒体透视引擎,可以采集
twitter 和 facebook 等社交网络数据。一种交互式分析工具,可从个人社交网络帐户采集
数据,对其进行存档和处理,并将数据绘制成图表以便更直观地查看。
31.微购
微购社交购物系统是一款基于ThinkPHP框架开发的开源购物分享系统。同时也是一套开源的淘宝建站程序,供站长使用。整合了淘宝、天猫、淘宝等300多家网站。首页商品数据采集界面为广大淘宝站长提供傻瓜式淘客建站服务。懂HTML的可以制作程序模板,免费开放下载。是广大淘宝站长的首选。
二郎爬虫
32. 埃博特
Ebot 是一种使用 ErLang 语言开发的可扩展的分布式网络爬虫。URL 存储在数据库中,可以通过 RESTful HTTP 请求进行查询。
*敏*感*词*爬虫
33.蜘蛛
Spidr是一个Ruby网络爬虫库,可以完整的爬取整个网站,多个网站,一个链接到本地。