干货教程:seo关键字优化工具有哪些(10款免费实用的SEO关键字研究工具推荐)

优采云 发布时间: 2022-10-27 21:33

  干货教程:seo关键字优化工具有哪些(10款免费实用的SEO关键字研究工具推荐)

  选择正确的关键字对卖家来说至关重要,本文列出了 10 个免费的关键字工具,可以帮助您开始零成本的 SEO。

  1. 谷歌趋势

  谷歌趋势显示随着时间的推移关键字的相对受欢迎程度。例如,如果我们查看过去 5 年的“服装”一词,我们会发现它的受欢迎程度在每年 10 月激增。这是因为人们在万圣节前搜索和购买服装。

  谷歌趋势可以帮助新手规划他们的内容日历。假设您在线销售服装,您可以在每年 9 月至 10 月发布您的“10 件可怕的万圣节服装”购物清单。

  每年 9 月,当 Apple 推出新款 iPhone 时,“iPhone 规格”的搜索量就会达到顶峰。

  如果您经营一个科技博客,每年 9 月更新和发布相关帖子可以吸引大量流量。

  除了内容日历,谷歌趋势还可以帮助卖家避免定位错误的关键词

  如果我们查看过去 12 个月的 Google 趋势,“apple watch series 5”的搜索量最近超过了“apple watch series 3”。

  seo关键词优化工具

  如果您经营的是电子商务商店,“apple watch series 5”是优先考虑的关键词。因为随着时间的推移,Series 3 的搜索量只会减少。

  2.关键字表

  Keyword Sheeter 可以从 Google 提取数以千计的自动完成建议。首先,输入关键词,然后点击“Sheet keywords”。

  Keyword Sheeter可以快速生成大量关键词,每分钟可以采集1000条左右的想法,一键免费导出结果。但是 Keyword Sheeter 也有它的缺点,它的功能非常基础。

  它不显示搜索量或趋势数据,也不像 关键词 规划器那样对 关键词 进行分组。但它也有一个显着的优势:筛选。

  我们可以在 Keyword Sheeter 的过滤器中添加“how”。

  如上图所示,现在只显示与“如何”相关的搜索词。您也可以使用反向过滤器执行相反的操作,排除收录特定单词的查询。

  例如,如果您经营一个科技博客并将“Apple”作为 关键词,那么您可能只想看到与 Apple 相关的 关键词,而不是水果。

  因此,您可以使用关键字表排除“派”、“碎”、“水果”和“苹果酒”等。关键词。

  3.回答公众

  Answer the Public 可以根据您键入的单词显示问题、介词、比较、字母等关键词。

  我们可以先输入一个关键词,比如“蛋*敏*感*词*”。

  您看到的第一件事是相关的搜索问题。这些问题将包括:谁、什么、为什么、在哪里、如何、哪个、何时、是、是。

  例子:

  什么蛋*敏*感*词*最好吃?

  蛋*敏*感*词*是怎么做的?

  蛋*敏*感*词*会发胖吗?蛋*敏*感*词*会让人发胖吗?

  蛋*敏*感*词*什么时候过期?蛋*敏*感*词*保质期多久?

  默认情况下,您将看到一个可视化并可以切换到常规列表。

  接下来是介词,例如:for、can、is、near、without、with、to。

  例子:

  不含碳水化合物的蛋*敏*感*词*

  增加体重的蛋白质粉 增加体重的蛋白质粉

  蛋*敏*感*词*安全吗

  此外,还有比较,如:vsus、vs、and、like、or。

  例子:

  

  蛋*敏*感*词*与肉

  蛋*敏*感*词*或鸡胸肉

  蛋*敏*感*词*之类的追求

  4.关键词冲浪者

  Keyword Surfer 是一个免费的 Chrome 扩展程序,可显示输入到 Google 的所有查询和每月搜索量。

  目前,Keyword Surfer 显示 19 个国家/地区的本地搜索量估计值。这些国家包括美国、英国、加拿大、巴西、法国和德国。此外,Keyword Surfer 提供了打开或关闭全局搜索量的选项。

  也就是说,这些并不是真正的全球搜索量。这是目前在其数据库中 19 个国家/地区的搜索总数。除此之外,该插件还可以将搜索量估计添加到自动完成的结果中:

  并在搜索结果中显示 10 个“相似”关键词:

  Keyword Surfer 的缺点是您无法批量获取搜索量,它更多的是用于浏览网页的评估查询。

  5.关键词编辑

  Keyworddit 是一种独特的工具,可以从 Reddit 中提取关键字提示。输入一个 subreddit,它会挖掘一个主题的标题和最多 500 个关键字的评论。如果您对利基市场知之甚少或一无所知,则此工具是理想的起点。

  例如,如果您想创建一个关于古节食的博客,但您对该主题一无所知,您可以从 /r/paleo 获得灵感。

  如上图所示,健康饮食者关注以下方面:

  低碳水化合物膳食;

  慢炖锅食谱;

  素食等。

  除了想法之外,该工具还提取每个 关键词 的每月搜索量。这可以帮助您了解每个子主题的受欢迎程度。

  要了解有关关键字的更多信息,您可以单击“上下文”链接。

  6.关键词工具.io

  Keywordtool.io 是一个类似于 Keyword Sheeter 的自动完成抓取工具,但两者之间存在一些关键差异。

  首先,它更强大。它不像Keyword Sheeter那样吸引关键字提示,但它可以快速显示关键字。您甚至只需等待几秒钟即可查看关键字。

  其次,可以选择抓取结果的区域设置。这对于查找特定语言的关键字提示很有用。

  第三,它不只是从谷歌抓取结果。它还从 YouTube、Amazon、Bing、eBay 等获得建议 网站。

  如果您经营在线商店,那么从 Amazon 和 eBay 获取信息的能力对您特别有用。Keywordtool.io 可以发现买家正在寻找的特定产品或产品类型。

  您可以使用这些数据来扩展产品供应,甚至重组 网站。

  7.谷歌搜索控制台

  Google Search Console 可以帮助您跟踪 网站 在自然搜索中的表现。这意味着它将显示大量已排序的关键字数据。

  我们可以切换到“Average position”和“Average CTR”(平均点击率)。在这里您可以显示每个关键字的平均排名和点击率。

  假设您从关键字中获得了大量流量,但排名为 3-10。您可能需要针对更高的排名进行优化,而不是针对新的关键字。

  如果您的点击率低而排名高,则可能是您的页面没有足够吸引搜索结果。这个问题通常可以通过改进标题标签或元描述来解决。

  按点击率从低到高对报告进行排序。这通常会找到排名但从未定位的关键字。如果其中任何一个的展示次数较多且点击率较低,您可以在新页面上定位该关键字。

  8.问题数据库

  Questiondb 查找人们关于特定主题的问题。它从 Reddit 的 4800 万个问题的数据库中提取了这些信息。

  问题按受欢迎程度排序,但您也可以按主题排序。这是一个非常有用的功能,因为它将问题分组。例如,如果您搜索“蛋*敏*感*词*”并按主题排序。所有关于“素食蛋*敏*感*词*”的问题现在都将归为一类。

  

  9.批量关键字*敏*感*词*

  Bulk Keyword Generator 是一种用于本地 SEO 的关键字研究工具,可按行业类型生成关键字。

  首先,按照步骤 1 并从下拉菜单中选择业务类型。

  然后,您将看到与您提供的服务或产品相关的关键字列表。例如,我们将“管道工”设置为业务类型。我们看到的询问将包括热水安装、燃气安装、排水管清洁和排水管重新安装等。

  大多数提供这些服务的企业现在都在他们的 网站 上提到了这一点。但是许多人不会为这些服务类型的查询创建或优化单独的页面。例如,看看这家管道公司的主页:

  该公司在一份声明 网站 中表示,他们提供重新安装排水管的服务,但没有关于该服务的页面。

  在第 2 步中,该工具会将所选服务附加到该位置(例如,伦敦)。

  但是,这并不是特别有用,因为它不能反映人们实际搜索的方式。大多数伦敦人不会搜索“伦敦下水道服务”。他们会搜索“排水”或“排水服务”。谷歌将提供本地搜索结果。

  10. 谷歌

  Google 可能是世界上最强大的 关键词 研究工具。谷歌有一个自动完成功能,可以生成几乎无限数量的关键字提示。但这只是谷歌关键词研究的冰山一角。

  例如,上图是搜索者提出的问题。

  点击这些问题中的任何一个,谷歌就会加载更多。继续点击,可以生成几乎无限的问题列表。

  如果您想排名,您的内容需要与搜索意图保持一致。

  因为做搜索的人不是在购买模式,而是在学习模式,他们只需要看到搜索结果。

  假设您是一个电子邮件营销工具,并且您想为“电子邮件营销”排名。

  查看此查询的搜索结果,您会注意到两件事:

  搜索结果中出现的第一件事是精选片段。

  搜索者处于学习模式,他们希望查看博客文章和指南,而不是产品页面。

  其次,搜索结果页面中有不少初学者指南。

  这告诉我们,大多数搜索者都是电子邮件营销的新手,他们想学习电子邮件营销的基础知识。如果我们想对该关键字进行排序,这就是我们应该创建的。现在,如果我们搜索完全不同的东西,比如“dress”,我们会看到不同的搜索结果页面:

  所有搜索结果都是电子商务产品或类别页面,甚至显示购物广告。这表明搜索者处于购买模式。

  总结

  您可以使用免费的关键字工具来查找一些很棒的关键字。但这样做可能很耗时,而且时间就是金钱。

  现实情况是,挖掘 Google 自动完成查询是浪费时间,就像在电子表格中合并来自多个免费关键字工具的数据一样。您应该将这段时间用于更重要的事情,例如创建内容或建立链接。

  免费关键字工具在您的业务刚起步时非常有用,但随着 网站 的发展,您将需要付费工具来跟上竞争的步伐。

  相关文章:Blue Ocean关键词工具(15个常用的SEO关键词工具) google关键词工具有哪些,以及Google SEO关键词分析介绍和采矿工具?有什么好的seo网站(国外在线学习seo资源平台全集)关键词查询软件工具(产品关键词查询工具盘点)查找关键词的软件(爬关键词软件)shopee关键词推荐十月(台湾市场调查结果一起爆)详解seo分析工具(外贸13个工具网站谷歌SEO分析)哪个搜索软件最好(推荐比百度更好的搜索软件)关键词分析网站怎么做(10个亚马逊关键词挖掘和分析工具)关键词分析网站 有哪些工具(10个亚马逊关键词挖掘分析工具) seo内部优化方案分析(内部链接的5种SEO策略) Apple Watch有什么用?(Apple Watch 实用吗?)

  责任声明:文章资料由百科教程之家编辑精心整理、总结、整理,辛勤汗水。转载时请遵守行业规范,并务必注明作者、出处和本页链接。谢谢你的合作!

  本文标题文章:seo关键词优化工具有哪些(推荐10款免费实用的SEO关键词研究工具)

  本文文章url地址:

  解决方案:如何快速搭建实用的爬虫管理系统?干货满满,值得珍藏

  我在这里整理了一些关于 Python 的学习资料。有需要的朋友可以关注并私信“01”免费获取。废话不多说,正文:

  大多数企业都离不开爬虫,而爬虫是获取数据的有效途径。对于搜索引擎来说,爬虫是必不可少的;对于舆论公司来说,爬虫是基础;对于 NLP,爬虫可以获得语料库;对于初创公司,爬虫可以获得初始内容。但是爬虫技术比较复杂,不同类型的爬取场景会用到不同的技术。比如一个简单的静态页面可以直接用HTTP请求+HTML解析器完成;动态页面需要使用 Puppeteer 或 Selenium 等自动化测试工具;反爬网站需要使用代理、编码等技术;ETC。 。因此对爬虫有规模要求的企业或个人需要同时处理不同类型的爬虫,这将无中生有地增加大量额外的管理成本。同时,爬虫管理器还需要处理网站内容变化、持续增量爬取、任务失败等问题。因此,一个成熟的爬虫管理流程应该包括一个能够有效处理上述问题的管理系统。

  了解什么是爬虫管理平台

  定义

  爬虫管理平台是集爬虫部署、任务调度、任务监控、结果展示等模块于一体的一站式管理系统。爬虫管理平台一般支持分布式,可以多台机器协同运行。

  当然,上面的定义是狭隘的,通常针对的是技术人员或开发人员或技术管理人员。企业一般会自行开发内部爬虫管理系统,以应对复杂的爬虫管理需求。这样的系统就是上面定义的狭义的爬虫管理平台。

  通用爬虫管理平台

  什么是通用爬虫管理平台?您可能听说过 优采云(后来转换为 优采云采集器)和 优采云。前者基于云服务,可以在线编写、运行和监控爬虫,是广义爬虫平台中最接近狭义爬虫管理平台的;后者是一款流行的商业爬虫爬取工具,可以让小白用户拖放写入、运行爬虫、导出数据。你可能也见过各种API聚合服务提供者,比如Aggregate Data,这是一个可以直接调用网站接口获取数据的平台。这实际上是爬虫平台的一个变体,但它为你做了。爬虫写这个过程。而在两者之间,还有一家叫Kimonolab的外国公司,其中开发了一款名为Kimono的Chrome插件,可以让用户直观地点击页面上的元素并生成抓取规则,并在其网站上生成爬虫程序,用户提交任务,后台可以自动抓取网站上的数据。Kimono是一款很棒的爬虫应用,可惜Kimonolab已经被大数据公司Plantir收购了,现在还不能体验。

  在本文中,我们主要关注狭义的爬虫管理平台,因此后面提到的爬虫管理平台指的是狭义的。

  爬虫管理平台模块

  以下是一个典型的爬虫管理平台所涉及的模块。

  一个典型的爬虫管理平台的模块主要包括以下几个:

  当然,有些爬虫管理平台可能不止这些模块,还可能收录其他更实用的功能,比如可配置爬取规则、可视化配置爬取规则、代理池、cookie池、异常监控等。

  为什么需要爬虫管理平台

  有了爬虫管理平台,开发者,尤其是爬虫工程师,可以很方便的添加爬虫,执行任务,查看结果,不用在命令行之间来回切换,非常容易出错。一个常见的场景是爬虫工程师在最初的技术选型中使用了scrapy和crontab来管理爬虫任务。他必须仔细选择计划任务的时间间隔,以免填满服务器 CPU 或内存;比较难的问题是,他还需要将scrapy生成的日志保存到文件中。爬虫一旦出错,就得使用shell命令一一查看日志,定位出错原因。严重的需要一整天的时间;还有一个严重的问题,爬虫工程师可能会发现公司的业务量在增加,他需要编写数百个爬虫来满足公司的业务需求,而使用scrapy和crontab来管理是一场彻头彻尾的噩梦。可怜的爬虫工程师其实可以选择一个合适的爬虫管理平台来解决他的问题。

  如何选择合适的爬虫管理平台

  当您愿意解决上述爬虫工程师遇到的难题,而是想选择一个合适的爬虫管理平台时。

  您应该回答的第一个问题是:我们是否需要从头开始开发系统(Start from scratch)?要回答这个问题,您应该首先回答以下问题:

  我们的需求是否足够复杂,可以完全定制一个新系统(例如需要复杂的权限管理)?我们的团队是否有足够的技术实力来开发这个系统(例如,有经验的前端和后端开发工程师)?我们的时间资源是否足以让我们开发系统(例如一年的项目规划周期)?

  如果以上三个问题的任何一个答案都是“否”,您应该考虑使用已经上市的开源爬虫管理平台来满足您的需求。

  以下是市面上的开源爬虫管理平台:

  平台名称技术优缺点SpiderKeeper Python Flask基于scrapyd,开源版Scrapyhub,UI界面非常简洁,支持定时任务可能有点过于简洁,不支持分页,不支持节点管理,不支持除scrapy Gerapy Python Django + Vue Gerapy 之外的爬虫是崔庆才开发的爬虫管理平台。安装和部署非常简单。同样基于scrapyd,拥有漂亮的UI界面,支持节点管理、代码编辑、可配置规则等功能。它也不支持scrapy以外的爬虫,根据用户反馈,1.0版本有很多bug,我们预计2.0版本会有一定的改进。Scrapydweb Python Flask + Vue 精美的UI界面,内置scrapy日志解析器,更多任务运行统计图表,支持节点管理,定时任务,邮件提醒,移动端界面,是一个基于scrapy的爬虫管理平台,功能齐全。它也不支持scrapy以外的爬虫。Python Flask 是后端,存在一定的性能限制。Crawlab Golang + Vue 不仅限于scrapy,可以运行任何语言和框架的爬虫,漂亮的UI界面,自然支持分布式爬虫,支持节点管理、爬虫管理、任务管理、定时任务、结果导出、数据统计和其他功能部署稍显麻烦(但可以使用Docker一键部署),最新版本暂不支持可配置爬虫。一般来说,SpiderKeeper可能是最早的爬虫管理平台,但其功能相对有限。Gerapy虽然功能齐全,界面美观,但有很多bug需要处理。推荐给有需要的用户。等待2.0版本;Scrapydweb是一个比较完善的爬虫管理平台,但是和前面两个一样,都是基于scrapyd,所以只能运行scrapy爬虫;而Crawlab是一个非常灵活的爬虫管理平台,可以运行Python、Nodejs、Java、PHP、Go编写的爬虫,功能比较齐全,但是部署起来比前三种麻烦,但是对于Docker用户来说,可以一体部署(后面会讲)。Gerapy虽然功能齐全,界面美观,但有很多bug需要处理。推荐给有需要的用户。等待2.0版本;Scrapydweb是一个比较完善的爬虫管理平台,但是和前面两个一样,都是基于scrapyd,所以只能运行scrapy爬虫;而Crawlab是一个非常灵活的爬虫管理平台,可以运行Python、Nodejs、Java、PHP、Go编写的爬虫,功能比较齐全,但是部署起来比前三种麻烦,但是对于Docker用户来说,可以一体部署(后面会讲)。Gerapy虽然功能齐全,界面美观,但有很多bug需要处理。推荐给有需要的用户。等待2.0版本;Scrapydweb是一个比较完善的爬虫管理平台,但是和前面两个一样,都是基于scrapyd,所以只能运行scrapy爬虫;而Crawlab是一个非常灵活的爬虫管理平台,可以运行Python、Nodejs、Java、PHP、Go编写的爬虫,功能比较齐全,但是部署起来比前三种麻烦,但是对于Docker用户来说,可以一体部署(后面会讲)。它基于scrapyd,所以只能运行scrapy爬虫;而Crawlab是一个非常灵活的爬虫管理平台,可以运行Python、Nodejs、Java、PHP、Go编写的爬虫,功能比较齐全,但是部署起来比前三种麻烦,但是对于Docker用户来说,可以一体部署(后面会讲)。它基于scrapyd,所以只能运行scrapy爬虫;而Crawlab是一个非常灵活的爬虫管理平台,可以运行Python、Nodejs、Java、PHP、Go编写的爬虫,功能比较齐全,但是部署起来比前三种麻烦,但是对于Docker用户来说,可以一体部署(后面会讲)。

  因此,对于严重依赖scrapy爬虫又不想折腾的开发者,可以考虑使用Scrapydweb;对于类型多样、技术结构复杂的爬虫开发者,应该优先考虑比较灵活的Crawlab。当然,并不是Crawlab对scrapy支持不友好。Crawlab也可以很好的集成scrapy,后面会介绍。

  作为Crawlab的作者,我不希望王破卖瓜吹牛。笔者只是希望把最好的技术选型推荐给开发者,让开发者可以根据自己的需求决定使用哪个爬虫管理平台。

  爬虫管理平台Crawlab简介

  介绍

  Crawlab是一个基于Golang的分布式爬虫管理平台,支持Python、NodeJS、Java、Go、PHP等多种编程语言和爬虫框架。

  自今年 3 月上线以来,Crawlab 一直受到爬虫爱好者和开发者的好评。不少用户也表示会使用Crawlab搭建公司的爬虫平台。经过几个月的迭代,Crawlab先后推出了定时任务、数据分析、网站信息、可配置爬虫、自动字段提取、下载结果、上传爬虫等功能,使平台更加实用和全面。,真正可以帮助用户解决爬虫管理的难题。如今,Github 上有近 1k 的 star,相关社区(微信群、微信公众号)也已经建立,四分之一的用户表示已将 Crawlab 应用于企业爬虫管理。

  解决这个问题

  Crawlab主要解决大量爬虫管理困难的问题,比如需要监控数百个网站混合的scrapy和selenium项目,不容易同时管理,命令行成本管理很高,很容易出错。Crawlab支持任何语言、任何框架,具有任务调度和任务监控,轻松有效监控和管理大型爬虫项目。

  接口和使用

  下面是 Crawlab 爬虫列表页面的截图。

  用户只需要将爬虫上传到Crawlab,配置执行命令,点击“运行”按钮即可执行爬虫任务。爬虫任务可以在任何节点上运行。从上图可以看出,Crawlab有节点管理、爬虫管理、任务管理、定时任务、用户管理等模块。

  整体结构

  以下是 Crawlab 的整体架构图,由五个主要部分组成:

  主节点:负责任务调度、API、部署爬虫等;Worker Node:负责执行爬虫任务;MongoDB数据库:存储节点、爬虫、任务等日常运行数据;Redis数据库:存储任务消息队列、节点心跳等信息。前端客户端:Vue 应用,负责前端交互和向后端请求数据。

  如何使用 Crawlab 及其详细原理超出了本文的范围文章。有兴趣的可以参考Github主页或者相关文档。

  Github地址和Demo

  使用 Docker 部署安装 Crawlab

  Docker 镜像

  Docker 是部署 Crawlab 最方便、最简洁的方式。其他部署方式包括直接部署,但不推荐给想要快速搭建平台的开发者。Crawlab 已经在 Dockerhub 上注册了相关镜像。开发者只需执行 docker pull tikazyq/crawlab 命令即可下载 Crawlab 镜像。

  读者可以去Dockerhub查看Crawlab的镜像,只有不到300Mb。地址:/r/tikazyq/c...

  安装 Docker

  要使用 Docker 部署 Crawlab,您必须首先确保已安装 Docker。请参考以下文档进行安装。

  OS 文档 Mac /docker-for-... Windows /docker-for-... Ubuntu /install/lin... Debian /install/lin... CentOS /install/lin... Fedora /install/lin... 其他 Linux 发行版/install/lin... 安装 Docker撰写

  Docker Compose 是一个运行 Docker 集群的简单工具,非常轻量级,我们将使用 Docker Compose 一键部署 Crawlab。

  Docker 官方 网站 已经有安装 Docker Compose 的教程,点击链接查看。这里有一个简单的介绍。

  操作系统安装步骤 Mac Docker Desktop for Mac 或 Docker Toolbox 自带,无需安装 Windows Docker Desktop for Windows 或 Docker Toolbox 自带,无需单独安装 Linux 参考下表命令其他选项通过pip,pip install docker-compose,如果没有virtualenv,需要使用sudo Linux用户使用以下命令安装。

  # 下载 docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose`

# 将 docker-compose 变成执行文件

sudo chmod +x /usr/local/bin/docker-compose

复制代码

<p>

</p>

  拉图像

  拉取镜像前,需要配置镜像源。因为在国内,使用原创镜像源的速度不是很快,需要使用DockerHub的国产*敏*感*词*。请创建 /etc/docker/daemon.json 文件并输入以下内容。

  {

"registry-mirrors": ["https://registry.docker-cn.com"]

}

复制代码

  然后拉取镜像,会快很多。当然也可以使用其他镜像源,可以网上搜索。运行以下命令拉取 Crawlab 镜像。

  docker pull tikazyq/crawlab:latest

复制代码

  下图是拉取镜像时的命令行界面。

  开始爬行实验室

  我们将使用 Docker Compose 启动 Crawlab 及其依赖的数据库 MongoDB 和 Redis。首先我们需要修改Docker Compose的yaml配置文件docker-compose.yml。该配置文件定义了需要启动的容器服务和网络配置。这里我们使用 Crawlab 自带的 docker-compose.yml。

  version: '3.3' # Docker Compose 的版本号(请看后续说明)

services: # 服务

master: # 服务名称

image: tikazyq/crawlab:latest # 服务对应的镜像名称

container_name: master # 服务对应的容器名称

environment: # 这里定义传入的环境变量

CRAWLAB_API_ADDRESS: "localhost:8000" # 前端调用的 API 地址,默认为 localhost:8000

CRAWLAB_SERVER_MASTER: "Y" # 是否为主节点,Y/N

CRAWLAB_MONGO_HOST: "mongo" # MongoDB host,由于在 Docker Compose 里,可以引用服务名称

CRAWLAB_REDIS_ADDRESS: "redis" # Redis host,由于在 Docker Compose 里,可以引用服务名称

ports: # 映射的端口

- "8080:8080" # 前端端口

- "8000:8000" # 后端端口

depends_on: # 依赖的服务

- mongo # MongoDB

- redis # Redis

worker: # 工作节点,与主节点配置类似,不重复写了

image: tikazyq/crawlab:latest

container_name: worker

environment:

CRAWLAB_SERVER_MASTER: "N"

CRAWLAB_MONGO_HOST: "mongo"

CRAWLAB_REDIS_ADDRESS: "redis"

depends_on:

- mongo

- redis

mongo: # MongoDB 服务名称

image: mongo:latest # MongoDB 镜像名称

restart: always # 重启策略为“总是”

ports: # 映射端口

- "27017:27017"

redis: # Redis 服务名称

image: redis:latest # Redis 镜像名称

restart: always # 重启策略为“总是”

ports: # 映射端口

- "6379:6379"

复制代码

  读者可以根据自己的需求配置docker-compose.yml。特别需要注意环境变量 CRAWLAB_API_ADDRESS。由于此变量配置不正确,许多初学者用户无法登录。在大多数情况下,您不需要进行任何配置更改。常见问题请参考Q&amp;A,详细环境变量配置文档,帮助根据您的环境配置Crawlab。

  然后,运行以下命令启动 Crawlab。您可以添加 -d 参数以使 Docker Compose 在后台运行。

  docker-compose up

复制代码

<p>

</p>

  运行上述命令后,Docker Compose 会拉取 MongoDB 和 Redis 镜像,这可能需要几分钟时间。拉取完成后会依次启动四个服务,在命令行中会看到如下内容。

  正常情况下应该可以看到四个服务都启动成功了,可以顺利打印日志了。如果启动不成功,请微信联系作者(tikazyq1)或在Github上提出Issue。

  如果在本地机器上启动Docker Compose,可以在浏览器中输入:8080,然后就可以看到登录界面了;如果在另一台机器上启动Docker Compose,需要在浏览器中输入:8080才能看到登录界面,也就是其他机器的IP地址(请确保本机8080端口对外开放)。

  初始登录用户名和密码是admin/admin,您可以使用此用户名和密码登录。如果您的环境变量CRAWLAB_API_ADDRESS设置不正确,您可能会看到登录按钮在点击登录后一直在旋转,没有任何提示。在这种情况下,请在 docker-compose.yml 中重新设置正确的 CRAWLAB_API_ADDRESS(将 localhost 替换为 ),然后重新启动 docker-compose up。然后在浏览器中输入:8080。

  登录后,您将看到 Crawlab 主页。

  本文文章主要介绍如何搭建爬虫管理平台Crawlab,所以我就不详细介绍如何使用Crawlab了(可以另写一篇文章文章详细介绍,有兴趣的可以付费注意力)。如果您感到困惑,请查看相关文档以了解如何使用它。同时你也可以加作者微信(tikazyq1)并注明Crawlab,作者会拉你进讨论群,你可以在这里回答你的问题。

  如何将 Scrapy 等爬虫集成到 Crawlab 中

  众所周知,Scrapy 是一个非常流行的爬虫框架,其灵活的框架设计、高并发、易用性和可扩展性已被众多开发者和企业广泛采用。市面上几乎所有爬虫管理平台都支持Scrapy爬虫,Crawlab也不例外,但Crawlab可以运行puppeteer、selenium等其他爬虫。下面将介绍如何在Crawlab中运行scrapy爬虫。

  Crawlab是执行爬虫的基本原理

  Crawlab执行爬虫的原理很简单,其实就是一个shell命令。用户在爬虫中输入shell命令执行爬虫,比如scrapy crawl some_spider,Crawlab执行器会读取这个命令,直接在shell中执行。因此,每次运行爬虫任务,都会执行一个shell命令(当然,实际情况比这复杂得多,有兴趣的可以参考官方文档)。Crawlab 支持显示和导出爬虫结果,但这需要更多的工作。

  编写管道

  集成scrapy爬虫,无非是将爬虫爬取的数据存储在Crawlab的数据库中,然后与任务ID相关联。每次执行爬虫任务时,都会通过环境变量将任务ID传递给爬虫程序,所以我们只需要将任务ID加上结果存入数据库即可(Crawlab目前只支持MongoDB,后续会开发MySQL、SQL Server、Postgres 后来等关系型数据库,需要的用户可以关注)。

  在 Scrapy 中,我们需要编写存储逻辑。原理图代码如下:

  # 引入相关的库,pymongo 是标准连接 MongoDB 的库

import os

from pymongo import MongoClient

# MongoDB 配置参数

MONGO_HOST = '192.168.99.100'

MONGO_PORT = 27017

MONGO_DB = 'crawlab_test'

class JuejinPipeline(object):

mongo = MongoClient(host=MONGO_HOST, port=MONGO_PORT) # mongo 连接实例

db = mongo[MONGO_DB] # 数据库实例

col_name = os.environ.get('CRAWLAB_COLLECTION') # 集合名称,通过环境变量 CRAWLAB_COLLECTION 传过来

# 如果 CRAWLAB_COLLECTION 不存在,则默认集合名称为 test

if not col_name:

col_name = 'test'

col = db[col_name] # 集合实例

# 每一个传入 item 会调用的函数,参数分别为 item 和 spider

def process_item(self, item, spider):

item['task_id'] = os.environ.get('CRAWLAB_TASK_ID') # 将 task_id 设置为环境变量传过来的任务 ID

self.col.save(item) # 保存 item 在数据库中

return item

复制代码

  同时,还需要在 items.py 中添加 task_id 字段,保证可以赋值(这个很重要)。

  上传并配置爬虫

  在运行爬虫之前,需要将爬虫文件上传到主节点。进行如下操作:

  将爬虫文件打包成zip(注意一定要直接打包到根目录下);点击侧边栏的“爬虫”导航到爬虫列表,点击“添加爬虫”按钮,选择“自定义爬虫”;点击“上传”按钮,选择打包好的zip文件并上传成功,即使上传成功,新添加的自定义爬虫也会出现在爬虫列表中。

  您可以点击爬虫详情中的“文件”选项卡,选择一个文件,然后编辑该文件中的代码。

  接下来,您需要在“概览”选项卡的“执行命令”字段中输入爬虫的shell执行命令。Crawlab的Docker镜像内置了scrapy,可以直接运行scrapy爬虫。命令是scrapy crawl。点击“保存”按钮保存爬虫配置。运行爬虫任务

  然后是时候运行爬虫任务了。其实很简单,点击“概览”选项卡中的“运行”按钮,爬虫任务就会开始运行。如果日志提示找不到scrapy命令,可以将scrapy改成绝对路径/usr/local/bin/scrapy,运行成功。

  任务的运行状态会显示在“任务”页面或爬虫的“概览”中,每5秒更新一次。你可以在这里查看。并且在爬虫的“结果”选项卡中,您可以预览结果的详细信息,也可以将数据导出为 CSV 文件。

  构建持续集成 (CI) 工作流

  对于企业而言,软件开发通常是一个自动化过程。它将经历需求、开发、部署、测试和启动的步骤。这个过程一般是迭代的,需要不断的更新和发布。

  以爬虫为例,你已经启动了一个爬虫,这个爬虫会定时爬取网站数据。但突然有一天,你发现无法捕获数据。你快速定位原因,发现是​​网站的修改。你需要改变爬虫的爬取规则来应对网站的修改。简而言之,您需要发布代码更新。最快的做法是直接在线更改代码。但这很危险:第一,不能测试自己更新的代码,只能通过不断调整在线代码来测试爬取是否成功;第二,你不能记录这个变化,如果以后出了问题,你会很可能忽略这个变化,导致bug。您需要做的就是使用版本管理工具来管理您的爬虫代码。我们有很多版本管理工具,最常用的是git和subversion。版本管理平台包括 Gitlab、Bitbucket 和自建的 Git 存储库。

  当我们更新代码时,我们需要将更新后的代码发布到在线服务器上。这时候就需要自己编写部署脚本,或者更方便的使用Jenkins作为持续集成管理平台。Jenkins是一个持续集成平台,可以通过获取repository来更新部署代码。它是一个非常实用的工具,被许多企业使用。下图是如何将 Crawlab 爬虫应用于持续集成工作流的示例。

  在 Crawlab 中有两种创建或更新爬虫的方法:

  上传打包好的zip文件;通过更改主节点中目录 CRAWLAB_SPIDER_PATH 中的爬虫文件。

  我们针对第二种方式进行持续集成。进行如下操作:

  用Gitlab或其他平台搭建代码仓库;在Jenkins中创建一个项目,将代码源指向项目中之前创建的仓库;在Jenkins项目中编写工作流,将发布地址指向Crawlab的CRAWLAB_SPIDER_PATH,如果是Docker,注意该地址挂载到宿主机文件系统;Jenkins项目的工作可以直接写,也可以用Jenkinsfile查看相关资料;这样每次代码更新提交到代码仓库后,Jenkins都会将更新后的代码发布到Crawlab中,Crawlab的主节点会将爬虫代码同步到worker节点进行爬取。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线