“泰迪杯”挑战赛 - 利用网络爬虫提取通用论坛正文

目录一、引言二、实验方案2.1 初步方案设计(解题思路)2.2 方案具体分析2.2.1 方案一可行性分析2.2.2 方案二核心思想2.2.3 方案三可行性分析2.2.4 方案综合分析三、 实验过程3.1 前期准备3.1.1 样本统计分析3.1.2 论坛标签统计3.1.3 主回帖判断分析3.2 方案形成3.2.1 选择器规律汇总3.2.2 主回帖判断3.2.3 初步方案3.3 后期测试3.3.1 查准率测试3.3.2 查全率测试3.4 特殊论坛提取框架3.4.1 容
摘要由CSDN通过智能技术生成

目录

一、引言

二、实验方案

2.1 初步方案设计(解题思路)
2.2 方案具体分析
2.2.1 方案一可行性分析
2.2.2 方案二核心思想
2.2.3 方案三可行性分析
2.2.4 方案综合分析

三、 实验过程

3.1 前期准备
3.1.1 样本统计分析
3.1.2 论坛标签统计
3.1.3 主回帖判断分析
3.2 方案形成
3.2.1 选择器规律汇总
3.2.2 主回帖判断
3.2.3 初步方案
3.3 后期测试
3.3.1 查准率测试
3.3.2 查全率测试
3.4 特殊论坛提取框架
3.4.1 容器的初始化流程
3.4.2 框架的使用流程

四、 实验结果

4.1 实验结论
4.1.1 核心成果
4.1.2 程序运行
4.2 测试结果
4.2.1 样本测试结果
4.2.2 论坛排行榜测试结果

五、 实验感想

参考文献
附录 1:选择器汇总表(完整)

一、引言

随着信息技术、信息产业的飞速发展,信息传播和更新的速度日新月异,这也使得信息的增长呈现井喷式发展,增长速度异常迅猛。如何利用好这些信息,逐渐成为企业、政府关注的焦点。传统波特价值链理论将信息作为增值过程中的支持要素,而非增值源泉,但是随着企业信息化进程的深入发展,信息有可能变成有用的资源[1, 2]。深层挖掘信息价值,使其与信息技术结合、与企业流程再造以及生产技术融合,就能从根本上提高企业的竞争力,实现价值增值[3]。在政府方面,大量信息的搜集、整理,以价值为导向的数据挖掘,能为政策的制定、方案的出台提供很好的数据与理论支撑。那么,如何在繁杂的信息中抓取有价值的信息呢?网络爬虫技术可以算得上是一个很好的解决方案[4]。

网络爬虫(Web Crawler)又称为网络蜘蛛(Web Spider)或 Web 信息采集器,是一个自动下载网页的计算机程序或自动化脚本,是搜索引擎的重要组成部分。网络爬虫通常从一个称为种子集的 URL 集合开始运行,首先将这些 URL 放到一个有序的特定爬行队列里,按照一定的顺序从中取出 URL 并下载所指定的页面,分析页面内容,提取新的 URL 并存入待爬行的 URL 队列里,如此反复,直至 URL 队列为空或达到某一终止条件,从而遍历 Web[5]。目前,已有一些聚焦网络爬虫技术、主题爬虫网络技术。但是,对于论坛这种非结构化的网页来说,爬取还有一定的难度[6, 7]。

移动互联网已经潜移默化地使人们的生活方式发生改变,越来越多的兴趣社区、交流论坛应运而生。网民可以随时随地在论坛分享新鲜事物、讨论热门话题。但是,这些分布在互联网的各个角落,被成千上万的网页所湮没,因此,正是需要网络爬虫技术将这些“信息孤岛”联合成一个集体[8-10]。这样,企业可以从中获取商机、政府可以从中找出趋势,以便为决策提供支持。

本项目着重阐述如何利用网络爬虫技术快速而准确地获取所需要的论坛信息:主帖和回帖的标题、作者、时间、内容。同时,消除可能存在的“噪音”,如广告、垃圾营销等[11, 12]。重点强调其通用性原则,不论何种网络论坛、不论何种论坛模板,都能通过设计的技术快速而准确地获得上述目标要素。本报告包括引言、实验方案、实验过程、实验结果、实验感想五个部分。

二、实验方案

2.1 初步方案设计(解题思路)

为了达到查全、查准且执行速率快的目的,本项目初步提出以下三种解决方案(图 1):

(1)方案一:先利用网络论坛模板来将论坛进行分类选择,目前常用模板如 Discuz、Colpwind、Phpwind、Drupal、Joomla、Wordpress 等。属于某一特定论坛模板的 URL 归为一类,进行一次分类以后,再利用 HTML 的标签属性进行筛选、抓取。

(2)方案二:通过对 HTML DOM 树进行多次深度优先遍历,利用 HTML 标签中的 id 属性值、class 属性值、标签名称或者其他共性选择出特定的标签集合,提取出标签中的文字,组合成论坛帖对象。

(3)方案三:通过简单的经验进行判断,例如时间的格式可能是YYYY-MM-DD
HH:mm:ss;一般来说主帖长度比回帖长;页面第一个正文为主帖,以后均为回帖等。总结粗放的经验来做分支判断,而后再逐渐细化[5, 13-17]。

在这里插入图片描述

2.2 方案具体分析

2.2.1 方案一可行性分析

首先对第一种方案进行试验,将所有论坛粗略分为使用模板类和自主开发类。考虑到普适性要求,除却实验给出的样例数据,将统计范围扩大到网络上论坛排行。通过在网络上搜集各类论坛的排名,综合数据可靠性、权威性和来源的真实性,选择了“站长之家”(chinaZ.com)Alexa 论坛网站排行榜中排名前 300 的论坛,如下图:

在这里插入图片描述

(1) Top300 模板统计
排名前 300 论坛分类统计结果如下(表 1)。
在这里插入图片描述
对于应用模板的论坛,其论坛主页左下角都有模板来源,例如智能电视网应用了 Discuz 模板,其网站主页便标明“Powered by Discuz”,如下图,其他模板类似。

在这里插入图片描述

因上述模板中以 Discuz 为主,其他类型模板所占比率均小于 3%,故对 Discuz模板占有率及其变化情况进一步统计,统计结果如下:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
由以上图表可知,Discuz 模板论坛所占比例虽在逐步上升,但总体比重仍在40%以下。相对而言非模板论坛数目较多。从总体来看,三类模板的总数占比不到三成,超过 2/3 的论坛采是自主开发或依据模板修改而来,而没有完全采用上述模板,使得网络爬取的困难大大增加。同时,通过对比发现,模板的不同版本标签属性也会有差别,如 Discuz X2、Discuz X3 之间也会有差别,为提高查准率,不能将其笼统的归为一类。

(2)样例模板统计

将组委会提供的样例数据(共 177 条 URL,涉及的论坛网站个数为 82)进行了分类统计。得出结果如下(表 3):

在这里插入图片描述
从样例数据汇总统计来看,样例数据中 80%以上的的网络论坛均未使用上述模板。

(3)结论
经过统计,82 个样例论坛属于排名前 300 的仅有 15 个,不在前 300 的为 67个,占比81.7%,故而将样例论坛与排名前 300 论坛分别统计是十分必要的。

在这里插入图片描述

对方案一的可行性研究,综合以下两点原因:

1)在排名前 300 以及样例论坛里面模板使用比率都较低,模板的占有率均处于 10%~30%;

2)即便是同一模板,不同版本之间也会有差别,意味着经过模板筛选后,还需进一步细化,大大增加工作量。

得出结论:方案一从模板进行筛选不可行。但对模板的研究仍是有一定意义的,已知模板论坛的标签具有一定规律,而在进一步研究后得出自主开发类论坛的属性标签也有此种规律的结论,故而将方案二作为主要方案进行实验。

2.2.2 方案二核心思想

在传统的 B/S 架构中,网页可看作由多个块状元素构成的。

在这里插入图片描述
在这里插入图片描述
而在 HTML DOM 树中,网页中的块状元素可看作是由多个 HTML 标签组成的,每个标签包含的不同内容对应着页面上各个块状元素。查询这些块状元素的方法,如下图:

在这里插入图片描述
在浏览器上任意打开一个帖子,选中元素如作者,使用查看器查看元素,可知其 class 属性值为 authi。

在浏览器的渲染过程中,每个标签的位置和样式由默认值和自定义 CSS 样式共同决定。各个论坛为保证良好的用户体验,增加用户量,需要友好的交互界面。而默认的标签样式和默认位置难以满足需求,所以需要通过自定义 CSS 样式来自定义标签的位置和样式。

自定义 CSS 样式一般有两种方式:

1)直接自定义 HTML 标签的 style 属性;

2)通过 CSS 选择器自定义一个或者多个标签。

为保证 CSS 代码的复用性,一般使用方式 2 进行标签样式自定义。因此可通过如下方式通过 CSS 选择器获取到对应的内容:

在这里插入图片描述

如上文所述,主帖和回帖的每个字段都包含在相应的具有名称、位置、或者属性特征的 HTML 标签中。而这些标签都具有不同的样式,样式是由 CSS 确定的,CSS 语法通过 CSS 选择器选择不同的标签从而给一类标签设定不同的样式,并由浏览器显示在页面上。因此,可以使用 CSS 选择器来选择这些字段所在的标签,从而获取字段值。

2.2.3 方案三可行性分析

为保证程序的通用性,需同时兼顾大论坛和小论坛,因此接利用简单经验会出现诸多问题。

例:有些URL是论坛的第2页或第3页,并不包含主帖,故而判定第一条content是主帖的结论不完全准确;主帖的长度并不一定比回帖长,比如一些问答帖极有可能回帖长度超过主帖;有些论坛的时间格式不是 YYYY-MM-DD HH:mm:ss,而是动态生成发表于 XX 分钟前、XX 小时前。

因此,虽然用经验判断可以大大减少时间和工作量,但查全率和查准率都不能达到预期标准。

2.2.4 方案综合分析

综合对三种方案的可行性研究分析,可知将每个方案独立进行的思路并不正确,而应将三种方案融合成一种新方案——以方案二为主,方案一、三为辅。在新方案中,以方案三作为 HTML 标签提取的经验支撑,如内容属性标签大多含有content 字符串,故而在使用 CSS 样式选择器时主要提取相关内容,可大大节省提取时间;此外,方案一中属于同一模板的论坛其 HTML 标签基本相同,故可将方案一并入方案二。鉴于新方案与方案二的核心思想一致,为使用简便,此后对新方案仍称为方案二。

方案二核心思想:利用 HTML 标签中的 id 属性值、class 属性值、标签名称或
者其他共性进行筛选,同时结合排名前 300 以及 82 个样例的论坛经验总结综合作
为支撑依据,来进行目标要素的爬取。

三、实验过程

3.1 前期准备

3.1.1 样本统计分析

(1)首先对给出的样例进行了分类统计,177 个帖子属于 82 个论坛,根据这些论坛的性质和应用,又可做出以下分类:
1)腾讯:5 个,腾讯娱乐、腾讯汽车、腾讯电脑管家、腾讯手机管家、腾讯大粤网

2)网易:2 个:网易居家论坛,网易女性

3)有关电子产品、软件的论坛:18,涉及的品牌有 360、华为、酷派、联想

4)游戏论坛:5 个

5)汽车论坛:8 个

6)亲子、女性:8 个

7)经济、股票:8 个

8)异常论坛:6 个

9)娱乐八卦:3 个

10)地方性论坛:17 个,北京、上海、连云港、南阳、湖南、广西、大粤、深圳、晋江、青岛、海南、广州、济南、宁波;其中上海有 3 个:上海网,上海滩论坛,四四论坛

11)综合大论坛:6 个,环球论坛、天涯户外、华声论坛、人民网、西祠胡同、海内外

综合统计如表 4:
在这里插入图片描述
在这里插入图片描述
(2)根据对样例帖子内容的分析,可将帖子话题概括为:股票分析、原油价格分析、明星八卦、体育、汽车、奶粉、游戏策略、数码产品、淘宝刷单、微信营销、招聘信息、节假日、情感。

(3)分析总结:从统计结果看,样例所涉及的论坛和帖子类型较为广泛,对于程序的普适性要求极高;此外,部分论坛如异常论坛会产生 URL 失效、禁止内容爬虫等问题,在之后的实验过程中均不使用此部分论坛。

3.1.2 论坛标签统计

(1)由题目要求可知,每个帖子无论主帖或是回帖,都需提取出标题(title)、时间(publish_date)、作者(author)、内容(content),先后对 Top300 和 177个样本的帖子源代码中相关内容选择器进行提取分析,常见格式如:

标题:

1. <h1 class="ts">
2. <span id="thread_subject">【第 2 件半价】</span>
3. </h1>

作者:

1. <div class="authi">
2. <img src="#">
3. <a href="#" target="_blank" class="xw1">麻辣 e 仔</a>
4. </div>

时间:

1. <div class="authi">
2. <img class="authicn vm" id="authicon61216918" src="#" />
3. <em id="authorposton61216918">发表于 2016-2-16 15:48</em>
4. </div>

内容:

1. <div class="pct">
2. <div class="pcb">
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习的数据喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值