汇总:​URL定向采集,网页数据内容快速抓取

优采云 发布时间: 2022-11-22 03:19

  汇总:​URL定向采集,网页数据内容快速抓取

  有针对性的采集就是我们有一个明确的目标,需要在某个网页上指定公开的信息。针对性的采集软件可以帮助我们快速采集这些文字、图片、列表、链接等元素。

  有很多针对性的采集软件,比如优采云

、优采云

、SEO等可以快速采集我们的网页。相对于定向采集,我们还可以通过关键词进行泛采集。泛采集就是通过一个模糊的关键词或者描述来采集我们全网的文章。

  定向采集有一个可视化的操作页面,不需要我们输入采集规则。通过点击需要的元素,可以批量抓取页面,自动翻页,挂机即可完成整栏的采集。一键导出到本地,支持word、Excel、txt等格式。

  

" />

  泛集是一种快速获取大量文章的方法,通过输入词表匹配搜索引擎给出的文章。获取的内容为各平台搜索框排名靠前的内容,具有时效性、热门性和相关性。不同的关键词会得到不同的内容。适用于专业性较低、时效性较强的资讯类文章。

  如果我们不想使用响应式设计,我们至少需要让我们的网站适合移动设备,以确保我们所有的内容都可以在小屏幕上阅读。这包括使用易于阅读的字体大小和限制每页上的文本量。为优化我们的网站数据,我们必须确保所有信息准确且最新。这包括每个页面的标题、关键字和描述。

  数据是普通用户看不到的有关我们网站的信息,例如上次更新日期或作者姓名。确保此信息收录

在我们的网页上,以便搜索引擎可以正确索引它。

  

" />

  我们可能会使用有针对性的抓取软件来展示我们网站的运行情况并识别需要修复的问题或错误。它还可以帮助我们优化我们的网站以获得更好的 SEO。我们也可能使用它来跟踪我们网站排名随时间的变化。

  如果我们使用内容管理系统 (CMS),我们通常可以使用有针对性的采集软件来帮助我们优化数据。例如,Yost SEO 是一种流行的 SEO 工具,它允许我们控制我们网站的数据。这个插件允许我们调整标题、描述和其他影响页面 SEO 的基本元素。

  针对性采集软件帮助我们获取大量数据和图文素材,让我们在SEO工作中不断分析和提升内容质量,实现网站的快速优化。如果您喜欢本文,不妨采集

、点赞、转发。

  干货内容:百度竞价广告:穷尽蓝海流量-收集篇

  我今天刚开始写关于投标的第一篇文章。事实上,我一直想谈谈付费安置。和SEO相比,我更喜欢SEM和FEED,付费投放确实给我带来了很大的价值。

  SEM 是复杂问题的简化。你不需要考虑太多未知的算法、规则、技术、想法等,你只需要在持续控制ROI的前提下,思考用户需求,优化固定指标即可。搜索引擎优化是相反的。很多时候你需要优化问题是不是问题并不重要。

  PPC广告离不开关键词,但大多数SEMer没有任何技术能力,尤其是官方代理公司的运营人员,几乎一个都算一个,所以一般只用官方工具来简单扩词(比如关键词 planner),或者通过“Search Term Report”等发现新词。

  例如:某外包公司在推广小程序定制开发时,一般扩词的方式是打开百度关键词策划师展开:

  然后继续展开常见的:“小程序开发”、“小程序定制”、“一个小程序多少钱”等等。

  最后我在Excel中去重,然后手动选出我认为有商业价值、流量、值得入账的关键词,一般是几百到几千不等,然后开始把它放进去

  出现的问题是:

  每个人都有这些,并不少见,我们可以看到,别人也可以看到,而且工具不会一下子给你数据库里的所有东西,所以一些难以想象的词根和词缀可能不会展开。许多要求可能会被遗漏。

  最先展开的词是搜索量非常高的热词。他们的转化可能不是最好的,但*敏*感*词*一定是最高的。

  通过搜索词报告(系统会统计用户每天点击你的广告的词数),找到更多没有考虑过的长尾词,也不是不可以,但需要时间和预算成本,而这往往不是small(觉得量太大开广泛匹配浪费更多的预算),数据计算期容易死掉。

  尤其是很多传统行业的公司,没有专业的SEMer,账号都是委托给代理商的客服(因为是免费的),他们开账号的方式也是一样的(毕竟大家有几十个不同的账号)来管理),几乎在收到账号后打开“关键词Planner”,进入行业主题,简单的选择几百个有明显商业价值的词,大致区分几个单位,然后开始投放,不管竞争的激烈程度,都不在乎长尾流量,更不在乎账号质量。

  最终,整个行业的人习惯性的抢了一小部分看得见的热词,并且因为竞价机制,点击单价快速上涨,广告预算水涨船高。最后得出结论:百度竞价真的很贵!!!

  其实理想情况下,应该是像我们标题所表达的意思:

  尽可能多地挖出没有人花过钱的有效词,这些词才是真金白银,干了就等于捡了钱!

  1:采集

词缀

  在以往的文章中,为了挖掘用户需求,我们已经涵盖了各种渠道的挖词方法,以及一些巧妙的挖词思路,但其实只要你愿意,还会有更多。

  当我们在百度搜索框中搜索:“小程序”

  我们可以看到,百度为我们找到了“74,000,000”个网页,即其数据库中与小程序相关的页面至少有这么多。

  但实际上我们只能得到760页:

  实际的原因是它认为我们不需要那么多,它只需要给我们最高质量和最相关的,另一个是客观上我们也买不起,带宽资源和硬件设备不能一下子解决。收到,当然也包括其他原因。

  但是当我们搜索:“小程序1234567890”时:

  百度数据库显示只有“1,030,000”左右的页面,图中红框选中的页面应该不会出现在我们上次的搜索中,只是因为我们这次的搜索词中明明有“1234567890”,所以百度给我们优先返回收录

“1234567890”的。

  我们把这个现象对应到任何一个关键词扩展工具,其实都是同一个道理,尤其是百度关键词 planner:

  如上图所示,这样扩展很多词是不行的。如果加上相应的词缀,比如“development”,就可以专门提取“小程序”中与“development”相关的长尾词。根据这个原理,我们只要反复添加各种词缀,理论上就可以提取工具背后数据库中几乎所有的长尾词。

  但:

  问题一:小程序字段收录

哪些词缀?

  问题2:可以想象有几万个,如何批量采集

,如何批量扩词?

  对于这两个问题,我们之前的文章也涉及到这种场景,比如先扩充一批词,切分词,搜索主题高频词缀的工具:

  

" />

  但是,经过一两次扩充,分词统计得到的词缀并不全面,至少是非常有限的,别说几万个,就算是反复把上百个词缀拿来工具一一搜索扩充,只有无情的,只有人类才能做到。

  这也是为什么大部分管理竞价的人只能简单的展开一小部分关键词然后开始上线的原因。说到底,还是要靠技术。

  PS:这和我们挖词分析需求是不一样的。分析需求,我们只需要找到有代表性的词。做投标时,不同的词是不同的词。

  针对这个问题,本文我们将采用另一种方法:利用海量文本内容来挖掘词。

  所谓文本内容可以是:文章、答案、帖子、新闻等互联网特有形式的文本内容。

  简单的逻辑是:

  采集

目标领域的一批文本内容,比如小程序主题的几万篇文章,以及非目标领域的一批随机文本内容,比如几十万篇新闻文章(这几百篇)数千篇文章可在不同行业重复使用)。

  使用TF-IDF算法(判断文章主题时常用的算法)提取目标领域各内容的高权重词。

  之前讨论过TF-IDF算法:

  在某篇文章中,一些出现频率高的词在其他文章中很少出现。这些话最能说明文章的主题。任何文章中总是出现的词对理解文章没有帮助,也不具有重要性和相关性。

  可以想象:

  一堆小程序领域的内容,当然和小程序高度相关的词会频繁出现,但是在其他领域,文章再多,词也不会多。反过来,就是像“但是”、“喜欢”、“这个”等。这种无伤大雅的流行词,在任何正常的书面内容中都会出现,而且还不少。如果简单地在目标领域计算,这些常用词的权重分值都不低,有时不容易区分。

  利用TF-IDF的思想,结合冷漠领域的内容,对常用词进行打分压制,沉淀的是小程序领域的相关词汇。

  将它们作为词缀结合“小程序”反复扩充单词,理论上可以从整个领域中尽可能多地采集

单词。

  搜集的内容越多,这个计算就越准确,能够整理出的词缀也就越全面。

  有了这个简单的逻辑,我们就开始实施它。

  第 1 步:采集

内容

  目标是某个领域的一批内容。在哪里可以批量查找同一领域的内容?

  有很多,比如一些专题论坛、社区、各种垂直自媒体号等等,因为特定的关系,它们的内容围绕着特定的领域,包括百度的搜索结果。

  知乎上一个问题的所有回答都专门讨论同一个话题。推而广之就是:同一个话题下所有问题对应的所有答案也是在讨论同一个领域(所谓领域是相对的),如:

  本次测试在知乎“小程序”话题下采集

了9000+题。题目有“小程序”,有答案。答案总数为37,000+。

  采集方式可以是Python+知乎官方api接口,也可以使用第三方采集工具如:“优采云

”、“优采云

”,或者有人代为某宝采集.

  部分测试数据:

  对于非目标领域的无差别内容,百度找“新闻语料库”,有合适的可以直接下载。如果你有技术能力,也可以自己采集

一些自媒体文章。

  我这里采集

了几百W条新闻的语料库,涵盖各种新闻分类,只拿了50W参与计算。

  第 2 步:计算权重分数(程序员看起来)

  TF-IDF的算法思想虽然很好,但也有先天的缺陷。对过滤词频不高的无关词很有效,但有些文章中总是会用到一些常用词,比如“can”。出现,词频很高,非目标领域的数据往往不全面,有时抑制效果不是很好,需要一些辅助。

  当然:“can”、“小程序”等关键词不一定有关联,也可以形成长尾词。

  对于TF-IDF的计算,Python有现成的模块:scikit-learn。不知道是不是我的姿势不对。前几天试了一下,发现效率和分数都和自己写的相差不大。用完它。

  我之前写了一个简单的函数(凑合着用):

  <p style="max-width: 100%;margin-bottom: 5px;margin-top: 5px;line-height: normal;"># 记录每个文档里每个单词的权重分数<br />docTfidf = dict()

  # docId:wordCount 存储每个文档对应的词频关系,顺便作为总文档数<br />docWordCount = dict()

  # 记录单词在哪些文档出现过,用于统计单词出现在多少个文档<br />wordDocCount = defaultdict(set)

  # 记录每个文档的总词数 包括重复<br />docAllWord = dict()

  # 分词 需要去除数字 单字 符号等

  def split_word(docId,docContent):<br /> wordCount = defaultdict(int)<br /> for word,flag in posseg.cut(docContent):<br /> wordCount[word] += 1<br /> docAllWord[docId] += 1<br /> wordDocCount[word].add(docId)<br /> return wordCount<br /># 计算权重

  def tfidf_count(docId):<br /> tfidf = dict()<br /> for word,count in docWordCount[docId]:<br /> tf = float(count) / docAllWord[docId]<br /> idf = math.log10(len(docWordCount) / (float(len(wordDocCount[word])+1))<br /> tfidf[word] = round(tf * idf,2)<br /> return sorted(tfidf.items(),key=lambda x:x[1],reverse=True)

  # 调用

  # 遍历文档内容并分词

  for docId in range(len(dc)):<br /> # wordCount 记录单词在当前文档的词频<br /> wordCount = split_word(docId,dc[docId])<br /> docWordCount[docId] = wordCount<br />for docId in range(len(dc)):<br /> docTfidf[docId] = tfidf_count(docId)</p>

  以上代码仅供我个人使用。仅供参考。我写完之后没有修改过。效率一般。有更好的方法自己写。

  该程序逻辑的伪代码:

  # 存储每个关键词的最终权重<br />wordWeight = defaultdict(float)for content in allContent:<br /> # 每篇内容的词和词频数据<br /> wordCount = defaultdict(int)<br /> # 每篇内容的总词数<br /> allWord = 0<br /> # 建议在没有行业词库的前提下使用jieba的posseg,词汇分到最细<br /> for word,flag in posseg.cut(content):<br /> allWord += 1<br /> wordCount[word.encode('utf-8')] += 1<br /> # 存储单篇内容每个关键词的权重<br /> _wordWeight = defaultdict(float)<br /> for word,count in wordCount.items():<br /> tf = float(count) / allWord<br /> # wordDocCount 事先准备的50W文章的关键词:出现文档数<br /> idf = math.log10((500000+1) / float(wordDocCount[word]+1))<br /> _wordWeight[word] += tf * idf<br /> # 按权重值降序<br /> _wordWeight = sorted(_wordWeight.items(),key=lambda x:x[1],reverse=True)<br /> # 提取top20%<br /> for word,weight in _wordWeight[:int(len(_wordWeight)*0.2)]:<br /> wordWeight[word] += weight<br /><br /># 最终结果按权重值降序<br />wordWeight = sorted(wordWeight.items(),key=lambda x:x[1],reverse=True)for word,weight in wordWeight:<br /> # 文档数大于一定值的去除,避免有些常见词没有被过滤<br /> # 取值根据自己的语料数据,跑两三次调整<br /> if wordDocCount[word] > 100000:continue<br /> print word,weight

  伪代码仅供参考,还少了一些步骤,不要直接拿来用,这是计算出来的高度相关词汇,大概4W+:

  

" />

  根据我们的常识经验,以上这些词与小程序领域相关度很高。

  这种计算的好处是不需要刻意去处理停用词、常用词、非实质性词等,因为随着更多未区分的内容参与计算,大部分无效目标的得分会不断降低:

  经过上面的计算,我们现在已经得到了“全网”中“小程序”可以涉及到的词汇,即词缀。之所以引用“全网”,是因为反正只是理论上的。在整个网络上,我们采集

的文本内容越多,我们就越接近,但我们不能真正穷尽它,只要比我们的竞争对手尽可能多。

  即使是刚刚接触公司业务的新手,也能借助工具想到或挖掘出“小程序开发”等长尾词。因此,这些具有明显商业价值的常见词缀不是我们分词方法的目标,所以我们首先要剔除这类词缀。

  一个简单的方法是:

  用通常的挖词法先扩充一批词。应该有10,000字左右。将这些词切分,分成最基本的词汇,提取别人肯定会扩充的词缀,比如这里:

  这些词都是明确的业务词,别人肯定会挖出来,把提取出来的词组合在一起,假设这个词缀设为A,我们刚才计算的词缀设为B,用BA,剩下的词缀其中大部分都是未知词缀,无法通过其他人的常规手段发现。

  如果要挖掘全网的需求,这一步就没有必要了,但是既然是挖掘蓝海词来竞价,这种方法就不需要去扩充那些别人可以轻易扩充的词缀。当然你要全部一起处理也是可以的。

  如何将“小程序”+以上词缀组合成关键词扩展工具批量扩展单词?例如:

  然后该工具可以自动轮流查询。毕竟一个一个的查询,下载,排序,太破了。该功能既可以解决扩容不完全的问题,也可以解决定向挖矿的问题。毕竟,有时候我们只需要在某个领域进行挖掘。

  百度关键词策划师这个功能比较鸡肋:

  反正我是不会用的。官方API接口很多人用不到。市面上有一些第三方工具,但既然是竞价,基本就是开户,那你就可以免费使用爱奇了。扩大:

  下面介绍一下他们的工具:

  对接的也是百度的官方接口。数据的时效性没问题,主要是方便。

  但是鉴于他们的“必须收录

”功能,有时候用起来还是很感人的,我推荐大家这样做(但不是一下子全部):

  展开后,直接复制结果中的词,然后粘贴到搜索框中,其他条件不变,继续展开。

  需要注意的是,这次主要讨论的是如何批量采集重要词缀。对于这些词缀,没有指定的词扩展工具。这是相同的。在任何渠道或工具中,有多方便,怎么来,最终的目的还是要看搜索量。

  按理说,我们现在可以把这些词加上一个小程序比如:“小程序答疑解惑”,在工具里展开这些词,然后看看有没有人在给这些词打广告,如果没有,我们就赶紧买字。

  但是我们现在要挖的是蓝海流量,所以在做之前需要考虑一些问题:

  对于竞价来说,所谓蓝海流量的逻辑很简单:长尾词还没有投放,但在此之前有个问题:有价值。

  什么才算是有价值的词?可能投标的小伙伴们已经考虑到了一个问题。搜索某个词后,没有人在做广告:

  我们不能简单的认为这个词是蓝海流量,就马上把它加到广告账号上。

  之所以没有人为某个词做广告,可能是因为这个词本身没有商业价值。我们都知道搜索“小程序类别审核失败”是为了找原因,而不是找一家公司帮他开发小程序,而且大家可能都已经上线了,所以根本不会有人为这个词做广告.

  二:“小程序运营”:

  有广告,看似有商业价值,但问题是我们是“程序开发”的*敏*感*词*。

  怎么做?

  感觉一篇文章动辄几万字,对理解和消化帮助不大。我们将在下一篇“查词篇”中讨论上述问题。挖掘词缀的方法,肯定不止是用在这件事上。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线