当前位置: 首页 > 面试题库 >

使角度爬网-项目开始

丌官高远
2023-03-14
问题内容

使用angularJS开发网站时,在开始使用网站之前,您是否需要担心Web爬网程序,还是可以将其推迟到网站完成。

例如,我读过HTML快照是一个很好的解决方案。如果选择执行此操作,则可以在对网站进行编码后实现它,还是必须基于这种功能来创建网站


问题答案:

我认为在项目开始时考虑该策略并在项目结束时实施该策略是很好的。

我们在我正在工作的公司中遇到了问题。

在所有情况下,您都需要向GET端点回答GET请求,例如

...?_escaped_fragment_=/home

Google或Bing等何时会抓取页面

...#/home

有关详细信息,请参见Google官方文档。

问题是您将如何填充资源的内容

...?_escaped_fragment_=:path

有不同的策略:

每次搜寻器要求资源时,使用PhantomJS生成动态快照

这包括在运行时生成PhantomJS进程,将生成的HTML页面的内容重定向到输出,并将其发送回搜寻器。

如果您的网站上有很多动态的可抓取内容,我认为这是最横向,最透明的解决方案。

在构建时或点击网站CMS的保存按钮时,使用PhantomJS生成静态快照

如果您的可抓取内容的内容从不更改或仅不时更改,则这很好。

在开发时或单击网站CMS的保存按钮时,生成静态的“等效”内容文件

这是一个非常便宜的解决方案,因为它不涉及PhantomJS。如果内容很简单,并且您可以轻松地编写它或从数据库生成它,那么这很好。

如果内容的检索很复杂,则很难处理,因为您将需要重复代码(一个客户端呈现Angular视图,而一个服务器端为爬虫生成整个页面“等效”内容)。

我提到了PhantomJS解决方案,但是任何无头的浏览器(或者如果可以负担得起的话,浏览器都不会)可以完成工作。
您甚至可以想象能够在不使用任何浏览器的情况下在服务器端呈现视图,而只需在NodeJS服务器中运行JS。

如果您将使用HTML5样式URL或hash或hashbang
URL,也请考虑一下。一旦搜索引擎将内容编入索引,这可能很难更改。我建议使用hashbang风格,即使它可以看作是“丑陋的”。*



 类似资料:
  • 我在做一个垂直滚动的日历。我正在加载初始日期,但是当新的日期被添加到列表中时,它们没有被渲染。 我有一个更新天数的服务。我知道天数列表正在更新,但似乎没有检测到变化。 如需了解更多信息,StackBlitz回购是公开https://stackblitz.com/edit/material-infinite-calendar

  • 我正在做一个角4项目,我从角CLI构建。 接下来我要安装JSDOC 我是按照指示做的: 所以,现在我安装了它。 我的问题是...我接下来要做什么来生成文档文件? 它在留档中说要运行这个命令: jsdoc yourJavaScriptFile.js "你的JavascriptFile.js"是什么意思?我正在使用Angular,它使用打字稿...它不应该扫描我所有的打字稿文件以获取评论,然后生成文档

  • 我使用Angular 7.2创建一个选择控件,如下所示: 这正是我们想要的。我有一些代码希望删除选定的项目,大致如下: 虽然这会将其从选定项的数组中删除。如果我从选择控件中选择新值,则所有原始项仍被选中(即勾选)。 如何清除所选项目? 根据@Maarti的响应,我的代码现在可以使用

  • 2.3 第一个爬虫项目 在你的项目中添加了WebMagic的依赖之后,即可开始第一个爬虫的开发了!我们这里拿一个抓取Github信息的例子: import us.codecraft.webmagic.Page; import us.codecraft.webmagic.Site; import us.codecraft.webmagic.Spider; import us.codecraft.we

  • 我是Angular的新手,我来自灰烬社区。尝试使用基于Ember-CLI的新Angular-CLI。 我需要知道在一个新的项目中处理SASS的最佳方法。我尝试使用repo来查看它是否可以继续使用,因为Angular-CLI的许多核心组件是从Ember-CLI模块运行的。 它没有工作,但再次不确定是否我只是配置错误的东西。 另外,在一个新的有角度的项目中,组织样式的最佳方法是什么?如果将sass文件

  • 在你配置好nginx文件之后,你就可以开始你的项目的,首先找到app/index.php, 这是项目的入口文件。所有的入口文件,包括api.php, phpunit.php artisan.php 都需要包含通用入口文件 server.php 下面看下server.php代码 <?php //设置页面编码 header("Content-Type:text/html; charset=utf-8"