本发明属于网页信息技术分析处理
技术领域:
:,具体涉及一种基于Jsoup的网页新闻列表的抓取及保存方法。
背景技术:
::新闻是社会信息传播的主要手段,互联网的飞速发展使新闻的传播更加方便与快捷,许多行业常常需要各种新闻信息,通常会从网络上大规模搜索信息,因而新闻的采集工作成为各行各业都要关心的问题。现有的技术中,新闻列表采集技术一般先在本地建立数据库进行存储,然后利用爬虫技术进行网页抓取,这种操作模式比较繁杂,需要提前安装数据库,对于非IT行业来说,难免耗费多余的财力与人力。因此,如何把Web中的新闻列表信息转化成简单的文本格式信息,并方便保存浏览,简化采集程序,成为解决企业新闻信息获取的良好手段。技术实现要素:针对现有新闻抓取程序操作较繁杂,专业性强的特点,本发明提供一种基于Jsoup的网页新闻列表的抓取及保存方法,该方法适合存在<table>、<div>、<li>等标记的Html新闻网页,能够实现对新闻列表的标题内容、链接地址及发布时间的准确抓取,将抓取结果进行分类,并保存到本地txt中。为实现上述目的,本发明采用如下技术方案:(1)创建存储对象:在本地服务器中建立txt空文档,在Java程序中给txt文档构造一个FileWriter文件对象,并设置写入内容的编码格式,避免文档存储过程中的乱码现象,实现文档的可写入性;(2)解析对象:使用Jsoup解析器解析新闻列表页面URL的Html,创建一个Document对象获取解析后的文本内容;对Document对象进一步解析,首先使用select的方法抽取Document对象,返回Elements对象,实现对指定元素的过滤,包括table、div等。(3)提取目标内容:继续使用Elements对象的select方法或getElementsByClass/Tag方式,将对象中的各元素节点的数据进行细化识别,区分标题内容、链接地址及发布时间;并定义若干字符串分别获取Elements对象中的标题内容、链接地址及发布时间,实现对新闻列表信息的提取。(4)使用流文件写入的方式将标题内容、链接地址及发布时间以一定顺序保存到txt中,同时利用for循环导出所有的列表信息,实现对整个新闻列表网页的抓取。(5)程序运行完成后清除缓存,并关闭文件,结束抓取过程。本发明具有以下优点:1、建立txt文档存储新闻列表内容,避免了在本地安装及创建数据库的麻烦,大大减小了程序的运行负担与操作难度,节约了时间;2、使用Jsoup解析器,采用内置的选择器方法,能够更加简单直观地抓取新闻的标题、链接及发布时间等内容。附图说明图1是本发明的基本流程图;图2是本发明具体实施方式中的实例操作流程图。具体实施方式以下是结合实例对本发明作进一步的详细说明:以某企业网站的通知公告为例,如图2所示,一种基于Jsoup的网页新闻列表的抓取及保存方法,包括以下步骤:步骤1:在本地或服务器中建立news.txt空文档,在Java中给txt文档构造一个FileWriter对象,并设置其编码格式为“UTF-8”,避免产生乱码情况;步骤2:输入通知公告的新闻列表页面url,使用Jsoup.connect(“url”).get()的方法解析页面的Html,得到一个Document对象dom,其中,Documentdom=Jsoup.connect(“url”).get();步骤3:使用select选择器的方法抽取Document对象,返回Elements集合,或者使用getElementsByClass/Tag的方式实现对指定样式及标签内容进行提取,同样返回Elements对象es;所述的select方法即Elementses=dom.select(″table″);所述的getElementsByClass/Tag方法指的是Elementses=dom.getElementsByTag(″table″);步骤4:定义若干字符串title、linkHref、datetime,用来获取Element对象中的标题、链接地址及发布时间;步骤5:根据继续es中是否存在多个tr、td进行判断。若存在,采用for循环的方式,通过Stringtitle/datetime=es.get(i).select(″td″).get(j).text()得到标题内容或发布时间,通过StringlinkHref=es.get(i).getElementsByTag(″a″).attr(″abs:href″)得到链接地址;其中,i表示行数tr,j表示列数td;步骤6:如步骤(4),若不存在,直接根据Stringtitle/datetime=es.getElementsByTag(“”).text()得到标题或时间,通过StringlinkHref=es.getElementsByTag(″a″).attr(″href″)得到链接;步骤7:将获得的title、linkHref、datetime以一定的顺序及格式封装起来,并用fwrite.write()的方式将封装后的结果不断地写入txt中;步骤8:程序运行结束后使用flush清除缓存,并关闭文件,实现对此页面的新闻列表抓取及保存过程。当前第1页1 2 3 当前第1页1 2 3