0

    从网页的“小广告”中提取出最热门的业务!

    2023.06.07 | admin | 164次围观

    问题

    也许我们每天在浏览网页时都会看到各种各样的小广告,它们可能是这样的:

    又或者是这样的:

    也可以是这样的:

    虽然每天见到,但是我们并不会过多留意,它们就像一块该有的区域,在那里自然而然的摆放着。

    在互联网营销领域,我们习惯性的从用户“口中”挖掘需求或商机,比如关键词、比如评论、比如提问,但却很少去留意广告中带来的需求或商机。

    相较于百度、头条等大型广告平台,PC站点的广告投放几乎没有太多要求限制,一般不明确违法就行,也因此,在这里能看到的广告,都是比较“直接”的。

    这些广告散落在很多网站,如何收集回来,会遇到什么问题,又要如何解决?

    今天这篇文章将讲解如何从1400+个网站当中提取可能存在的站外广告,并对收集回来的数据做基本的提取和分析,在文章最后找到广告当中的top业务。

    其中包含:数据收集思路、数据处理过程、数据分析方向,希望通过完整的流程和步骤来帮助大家发散思维,包括过程中涉及的技术问题如何转换思路,对以后的信息挖掘工作有实际指导意义。

    PS:文章主要演示思路流程和数据结果,不涉及实操步骤,这篇文章的重点在于解决问题的过程。

    数据收集思路1:目标站点收集

    作为一名互联网营销人员,我们可能会浏览很多与工作相关的网站,比如:行业工具站点、网赚博客或论坛等等。

    相对于这些站点,我们是用户,那么什么样的业务会投向我们这些用户呢(这是一个逆推逻辑)?或者说什么样的业务的目标群体是我们?

    有基于此,我们本次的数据源站点选择了与我们领域相关的网站作为演示,如:网赚论坛/博客、第三方工具平台、PC端小工具站点、源码平台、线报/兼职/任务平台等。

    如何收集这些目标站点?

    作为公众号老粉丝,相关的步骤方式应该都看过了,这一段跳过也无妨,简单的方式是:

    利用爱站这类平台的工具,直接收集领域里的代表性(有一定流量)站点。

    相对复杂但是较为全面的方式是:

    利用5118等关键词工具批量收集与目标站点可能相关的长尾词,如目标是网赚博客,与之相关的词汇就有:赚钱、项目、创业、兼职、副业等。

    使用5118的批量挖掘长尾词功能,就能收集到这些词汇的主要长尾词:

    将这些长尾词批量拿到百度搜索,搜索结果第一页里经常出现的站点就是我们的目标站点,其他类型站点同理。

    这里有相关的演示步骤:

    本次演示总共收集了目标站点1500+,去除一些官网、大站等没有研究价值的站点后,剩下1400+左右。

    有了大量的目标站点,接下去要收集每一个站点的代表性页面

    2:站点页面收集

    我们的目标--广告,它会出现在网站的相关页面里,网站有大有小,不可能整站页面都收集,并且网站都是模板化的产物,主要页面存在的广告,其他页面都会一样存在,所以只需要提取有代表性的页面即可。

    一个web网站,一般有如下结构:首页、栏目页(列表页)、子页面(文章页),而广告则有可能穿插在其中某类页面,甚至全站显示。

    一个网站的首页链接(主域名)我们很容易得到,在上一个步骤中就可以统计到每一个站点的主域名。

    子页面,一般子页面的链接里都包含日期格式或数据库ID的数值,以.html/.shtml/.htm等常见后缀结尾。

    同时,在确定了首页和栏目页后,不难在里面提取出子页面,现在的问题在于:

    当我们把一个网站主页的所有链接提取出来后,如何把这个网站的栏目链接识别并提取出来?或者说 程序可以区分开来。

    如上,对于一个网站而言,栏目链接并没有任何数量上的规定,也没有位置、尺寸、颜色的严格限制,更没有相关的固定字眼可以辅助判断。

    对于栏目的url格式,它有可能是常见栏目的链接形式:

    “”

    也可能是类似文章页面的形式:

    “”

    不一定是静态,或许是动态:

    “”

    因此,基于以上思路,我们都没有办法可以让程序自动把一个站点的栏目链接提取出来。

    此时,我们需要转换一下思路:

    作为seo出身的我,对搜索引擎的工作原理有些了解,事实上识别网站栏目链接也是搜索引擎需要做的工作.

    栏目链接可以直观体现网页页面的层级关系和相应的重要程度。

    搜索引擎识别栏目链接的技术方案也不是唯一的,比如通过url规律来做猜测:

    “”

    “”

    “”

    基于上面的url特征,程序可以认为:

    “”

    可能是一个栏目链接,进而推测:

    “”

    可能是上一级栏目链接。

    事实上,搜索引擎的爬虫还会猜测站点可能存在的未发现的url,同样是基于上面的url特征,程序可以认为还存在:

    “”

    只需要尝试访问看看,就可以直接得到一个新发现的页面,不需要再从网站经过各种页面的抓取才发现,间接提升了收录效率,所以规律简洁的url设计,对收录也有帮助。

    当然,这种策略需要基于大量数据,不可能通过简单几条数据下结论,因此在这里,我们使用另一种简单、直观、效果立竿见影的策略:

    假设下面是一个目标站点的主域名:

    对它访问后,我们可以从中提取到这个页面的所有a标签里的url(只提取域名相同的站内url)。

    记录这份url数据,这是我们第一次见到它们,它们是在首页被发现的,其中一定有一部分链接是栏目链接。

    随机从这些url里挑选10-20条,比如15条,挨个访问这15个页面,同样提取每个页面里存在的url。

    最终统计在首页得到的url数据里,哪条url可以同时出现在访问的15个页面里,这样的url 99.9%是栏目链接。

    原理很简单:网站都是模板化的产物,绝大部分网站的栏目版块都会同时出现在这个网站的所有页面,反之 能够同时出现在所有页面的url极有可能是栏目链接。

    从这点来看,技术还是有点意思吧,本质上技术就是发现规律并利用规律。

    当然,这个策略对于类似“登录页面”、“注册页面”之类的可能会存在误判。

    但是一来:这个比例很小,二来:我们可以通过url里的一些关键词汇屏蔽,比如:login,并且对于我们抓取广告,这种页面也只是造成无效抓取而已,并不影响结果。

    事实上这个策略类似思路是有相应专利的,有兴趣可以到网上查查。

    本次演示总共从1400+的目标站点里提取了相关栏目页面及其子页面合计2.2W+。

    有了目标网站代表性的页面,接下来就可以从2W+的页面里挨个提取可能存在的广告。

    3:广告链接收集

    对于一个存在于某个页面的广告,它可能会有一些特征,比如:

    从网页的“小广告”中提取出最热门的业务!

    集中在某块区域,旁边有“广告”字眼,文本内容经常包含:优惠、特价、联系、以及各种醒目符号等等:

    又或者是一条细长的横幅图片,gif格式、有闪动效果,旁边同样有广告字眼:

    我们甚至还可以识别出广告链接这个元素在网页前端看到时的实际坐标加以判断。

    以上这些规律都是重要特征,但是这些特征的问题在于:广告有这些特征,可有这些特征不代表是广告。

    诚然,由于网页样式的独特性和随机性,我们没有任何方法可以完全识别所有目标广告,但至少上面的方式可能会带来大量无效数据。

    在这里,我们仍然还是切换一下思路,同样用另一种简单的策略:

    尽管截止今天,seo的重要性在不断降低,但是seo的很多概念却是根深蒂固的,比如:外链权重。

    无论是考虑到链接权重的传递问题还是商业竞争问题,在过往的这些年,几乎很少有站长会把别人的链接放到自己的页面上,纯文本链接不会,超链接更不可能,除了广告!

    也就是说,作为页面里的第三方广告,它们都有一个特质:广告链接都是站外的。

    那么基于这个策略,提取就很简单了,一个网页里的所有站外链接(url主域名不一样)都可以被认为是广告,如果再加上上述细节特征加以辅助判断,基本准确无误。

    事实上,仅仅以站外链接作为判断标准,在我这里的测试中,大部分网站基本不存在太多错误判断。

    说到底:不给钱,凭啥给你上链接!

    这样一来,广告链接的识别提取问题也解决了。

    PS:很多第三方广告在页面里都被嵌套在iframe框架里,要穿透框架一起提取。

    4:过滤友情链接

    尴尬的是,在我们上述的策略中,有一个版块刚好会有冲突,就是友情链接版块:

    友链一般位于网站底部,集中在一个区块,这个版块的链接全是站外链接,这个时候我们需要一些策略来把属于友链的链接过滤掉,不要被识别为广告链接。

    仍然是基于技术利用规律的本质:

    虽然友链都集中在底部,友链旁边都有一个“友情链接”的文本,但是一个页面上可能在多个位置存在“友情链接”这个字眼。

    同时html的半结构规则,我们也不好判断一批链接是不是一片区域。

    但是我们发现:

    首先一般只有首页会有友链版块,少数大站点会在栏目页面也有友情链接版块。

    有友链版块的页面都会出现“友情链接”这段文本,极少数会用“友链”、“合作伙伴”等代替。

    其次,友情链接都是锚文本(纯文本),3-5个字左右,为了增加目标关键词的相关性,基本不可能是图片形式的链接。

    并且除非品牌特定名称,否则这些文本都是纯汉字,也不可能包含任何标点符号。

    下面两个对比很直观:

    因此,我们的策略是:

    当我们尝试从一个网站的首页提取站外广告链接,那么提取出来的链接都需要判断是否是友链。

    当我们尝试从一个网站的栏目页提取站外广告链接,那么判断页面是否存在“友情链接”等字眼,如果有,则提取出来的链接都需要判断是否是友链。

    至于子页面(文章页),提取出来的站外广告链接不需要判断。

    当一个页面的每条站外广告链接需要判断是否为友链时,还可以事先做一层过滤:

    图片形式的链接不用判断、文本字数超过N(比如6个字)的链接不需要判断、文本包含标点符号、特殊字符的不用判断。

    如此一来可以过滤掉很多链接,节省判断成本。

    剩下的链接就需要判断是否为友链了,那么如何判断呢?基于友情链接互相导向的规律:

    假设a页面中提取到一条链接b,我们访问b,如果在b页面中可以看到页面a的链接,则判断为友情链接,反之为广告链接。

    基于以上策略,我们可以在花费较低技术成本的情况下,把友链过滤掉,仅保留广告链接。

    本次演示总共在2W+的页面里提取到了6W+的广告链接。

    数据处理过程1:数据存储格式

    在顺利收集到数据并存储到数据库中时浏览网页时 遇到的最常见的网络广告形式,数据表的存储格式可以参考如下:

    广告链接:

    存储点击广告之后打开的链接地址,方便后续进一步研究广告页面。

    广告主:aaa

    存储这条广告链接对应的域名,一般同一个团队用的是同一个域名,方便后续统计一个广告主有多少广告,或者在多少个网站投放。

    有些广告的链接地址是qq,比如:wpa.qq.com,就是我们点击这条广告后马上就可以跟卖方在QQ聊天了(要不说这里的广告都很“直接”)。

    所以不能直接存储qq,qq的wpa链接可以直接唤起对应qq号码的聊天窗口,所以在链接地址都有QQ号码或者QQ号码对应的转义编码,具有唯一性,存储这个即可。

    业务描述:seo服务

    存储这条广告对应的业务所属,比如该广告是提供seo排名提升的业务,就打上“seo服务”的标签。

    广告文本:广告语

    如果该条广告链接是锚文本链接,直接存储相应文本,否则为空!

    广告图片:img_url1|(0,0)|(100,100), img_url2|(0,0)|(100,100)

    存储这条链接里所能见到的图片以及相应的坐标和尺寸(有可能多张)。

    图片文本:广告语

    后续从图片中提取到的文本信息存储到这里。

    所在页面:

    存储该条广告链接来源于哪个页面,方便后续统计页面存在的广告数量或广告存在多少个页面。

    页面域名:bbb

    存储页面对应的域名核心,方便后续根据域名统计。

    域名所属类别:blog

    表示这个目标站点是一个网赚博客,方便后续根据类别统计。

    网站类别可以在第一步收集站点时,在收集到域名之后集中打上标签即可。

    2:数据清洗

    尽管我们事先采用了各种策略以期望达到目标的预期,但是要知道web内容本身就是半规则的代码形成的,它会存在各种我们无法预期的情况。

    因此当数据存储到本地之后,我们还需要有一步数据清洗的工作,对于不符合我们预期的内容需要根据它们的特征进行过滤删除。

    数据清洗并不是一个标准化的工作,需要结合实际情况,当然了,本质上大部分是文本处理,包括:

    广告语为空、图片无实际内容、少数识别错误的非广告链接等等,可以根据文本特征、url,甚至是域名级的过滤。

    有小部分网站在页面里存在大量站外且非广告的链接,这种情况是存在的,这就是以前seo里的一个概念:枢纽页面,因为业务或网站定位等各种原因,不考虑权重或外链问题。

    这种类型的网站,经常是有大量站外链接、锚文本很短、整片出现等特征,识别出来过滤掉。

    另外,在友情链接过滤环节,由于可能存在掉链现象,即a有b,但b没有a,因为b把a去掉了,可实际上b在a里是一条友链(其实也可能这就是一条花钱买的友链)。

    在这里,我把广告形式属于锚文本、纯汉字、4个字以下、来源于首页、实际位置位于页面较为底部的广告链接去除浏览网页时 遇到的最常见的网络广告形式,毕竟一个正常的第三方广告,它的广告语不会只有三两个字。

    在执行了数据清洗的步骤后,总数据还剩下4W+左右。

    3:ocr图片文本识别

    在我们抓取回来的广告中,有一部分广告链接是以图片形式展示的,因此需要把广告图片中的广告文本信息提取出来。

    版权声明

    本文仅代表作者观点。
    本文系作者授权发表,未经许可,不得转载。

    发表评论