网站内容采集(技术中的字段映射关系及其问题)

优采云 发布时间: 2021-11-19 20:09

  网站内容采集(技术中的字段映射关系及其问题)

  让jsoup通过配置的数据块位置获取该位置下的所有内容,并参考数据映射表Relations中的映射一一解析web内容中的数据字段。解析入口地址的信息后,开始寻找网页采集任务的分页策略。如果分页策略为page,则将{in the link 采集 page}参数替换为实际页数,然后通过jsoup获取下一页的内容;如果分页策略是ajax,则通过javawebclient执行配置中的ajax脚本,将ajax的{page}参数替换为实际的页数,然后通过jsoup获取下一页的web内容;第三步,存储采集信息,存储来自采集的标准数据 通过jsoup进入数据库。由于现有技术中的第二种方法,提取网页内容的方法主要是通过现有的工具获取整个网页内容,通过解析网页内容dom树来获取我们希望获取的网页内容,例如:获取百度下广告图片的具体名称。我们将通过jsoup等工具打开,获取返回的htmldom树,然后找到页面广告部分的页面位置,分析这部分数据,得到广告内容的名称。这种方式有两个主要问题。问题一:在获取网页内容的过程中,有很多工作需要人工参与和分析。比如广告内容在网页的htmldom树中的位置,以及该职位下的职位。div或td的内容属于广告的名称,即广告的链接;问题二:百度广告位内容为分页形式。在浏览器上,用户可以点击左箭头和右箭头来获取上一页和下一页。通过部分刷新网页的dom树来展示网站的广告内容。这种方法也是越来越多网站显示数据的方式。如果使用现有的工具,将无法实现广告内容的上一页和下一页的获取。因此,本技术方案通过配置生成定时任务来分析需要采集信息的网站。在定时任务中,你会知道网站 内容获取方式为传统的全网页刷新实现或部分网页刷新实现。如果所有网页都刷新了,直接通过jsoup获取所有网页内容,然后从定时工作配置信息中找到数据块的位置,找到工作中数据块字段的映射属性,比如第一个

  或者映射到一个广告链接,第二个

  或映射到广告名称完成数据分析;如果是部分网页刷新,则需要从定时任务配置信息中获取部分网页刷新数据需要执行的ajax方法,通过实现javawebclient调用ajax方法刷新部分网页内容网页,然后重复jsoup获取网页内容,最后完成数据的分析。与现有技术相比,本发明的有益效果是:本发明通过配置自动识别网页上的有效数据块,并自动发现数据块的内容是刷新所有网页还是部分刷新得到的。阿贾克斯。如果是通过网页刷新,执行web内容采集会按照一般的传统模式执行,如果是通过ajax部分数据刷新,则会通过客户端自动执行ajax脚本,刷新数据后提取有效数据。从而达到所有数据采集的目的。附图说明图1。图1是根据本发明实施例的用于兼容双向自动化网页内容采集的方法的流程图。具体实施方式下面结合附图对本发明作进一步说明。Example 1 Step 1. 通过web项目定义网页信息采集任务,定义classcollecttask(采集任务),包括字段strictrenceurl(入口地址),enumcontentflag(获取内容块、xpath、class或id的方法)、stringcontentlocation(内容块数据的位置可以是xpath或唯一标记class和id)、enumpagestrategy(分页策略、page或ajax)、stringpageurl(链接用于分页执行或ajax调用的方法);定义:listclasstaskitem(内容字段定义的集合,一个任务收录多个采集的内容字段)、stringitemflag(对应网页中的元素,如td或div)、stringnumber(网页内容中有多少内容项) ,mapitems(每个content item对应我们数据库中的一个字段),比如items.put("1","title"), items.put("2,"Content"); 第二步,触发网页信息通过 springschedulertrigger 采集任务,本实施例使用001**?,配置文件如下:步骤3,网页信息采集任务执行;通过jsoup connectionconnect=jsoup.connect(url)打开collecttask信息中的入口地址;文档文档=connect.get(); 通过 jsoup 模块 elementstrs=tbody.getelementsbytag("id_flag") 定位内容数据;elementstrs=tbody.getelementsbyclass("class_flag"); 通过映射文件,解析数据块的内容,获取数据,执行ajax脚本进行分页数据加载 webclientwc=newwebclient();厕所。getoptions().setjavascriptenabled(true);//启用js解释器,默认为truewc.getoptions().setcssenabled(false);//禁用CSS支持 htmlpagepage=wc.getpage(url); page.executejavascript("changepage('2')"); 第四步,将解析后的梳子访问到数据库中,通过网络系统浏览和计数。以上具体实施例详细说明了本发明的实质,但不能限制本发明的保护范围。显然,在本发明的启示下,本发明的get(); 通过jsoup elementstrs=tbody.getelementsbytag("id_flag")定位内容数据模块;elementstrs=tbody.getelementsbyclass("class_flag"); 通过映射文件解析数据块的内容,获取数据并执行ajax脚本进行分页数据加载 webclientwc=newwebclient(); wc.getoptions().setjavascriptenabled(true);//开启js解释器,默认为truewc.getoptions().setcssenabled(false);//关闭css支持htmlpagepage=wc.getpage(url); page.executejavascript(" 获取页面(网址);page.executejavascript("changepage('2')"); 第四步,将解析后的梳子访问到数据库中,通过web系统浏览统计。以上具体实施例详细说明了本发明的实质,但不能限制本发明的保护范围。显然,在本发明的启示下,本发明);第四步,将解析后的梳子访问到数据库中,通过web系统浏览统计。以上具体实施例详细说明了本发明的实质,但不能限制本发明的保护范围。显然,在本发明的启示下,本发明);第四步,将解析后的梳子访问到数据库中,通过web系统浏览统计。以上具体实施例详细说明了本发明的实质,但不能限制本发明的保护范围。显然,在本发明的启示下,本发明

  技术领域:

  普通技术人员也可以进行很多改进和修改。需要说明的是,这些改进和修改均在本发明权利要求的保护范围内。当前页 1 12

  了解更多

  完成所有详细技术资料下载

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线