js抓取网页内容

js抓取网页内容

js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?

网站优化优采云 发表了文章 • 0 个评论 • 51 次浏览 • 2022-06-06 00:32 • 来自相关话题

  js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?
  Web 世界有一个至理名言,就是 Java 提出的“Write once, run everywhere”。但这句话只适用于 Java 么?我们能否也用它来形容 JavaScript 呢?答案是 Yes。
  我将会在这篇文章中介绍同构 JavaScript 应用的概念,并推荐一些资源帮助你构建此类应用。
  一路走来
  多年以前,web 只是一些由 HTML 和 CSS 搭建的静态页面,没有太多的交互。用户的每一个动作都需要服务器来创建并返回一个完整的页面。幸而有了 JavaScript,开发者开始创建很棒的效果,不过 Ajax 的到来才是这场革新的真正开始。Web 开发者开始编写能够与服务端进行交互,且在不重载页面的情况下向服务端发送并接受数据的页面。
  随着时间的推移,客户端代码可以做的事情越来越多,催生了被称作单页面应用(SPA)的一类应用。SPA 在首次加载页面时就获取了所有必需的资源,或者再按需动态加载并且渲染到页面上。 Gmail 和 StackEdit editor 是很棒的 SPA 示例。
  SPA 准许重度的交互设计,因为几乎所有的操作都在客户端执行,保持最低限度地与服务端进行交流。不幸的是,它们也存在一些严重的问题,我们选择几个进行讨论。
  性能
  因为相对于静态页面,SPA 需要更多的客户端代码,需要下载数据的体积也更大。这使得手机加载速度很慢,可能会导致一些极端的状况 —— 比如糟糕的用户体验以及收入上的损失等。依据 Microsoft 的一篇文章 ——
  Bing 的一项研究表明:页面的加载时间每增加 10ms,站点年度总收入就会减少 $250K。
  SEO
  因为单页面应用依赖于 JavaScript 的执行,服务器不会提供它们可能用到的任何 HTML 内容。因此,web 爬虫很难去索引到这些页面。爬虫就是可以向 web 服务器发送请求,并且将结果分析成原始文本的程序,而不需要像一个浏览器运行 JavaScript 那样解释和执行客户端的内容。不久前,Google 优化了搜索引擎的 web 爬虫,现在它也可以抓取基于客户端 JavaScript 所构建的页面了。但是 Bing、Yahoo 以及其他搜索引擎怎么办?一个好的索引对任何公司来说都至关重要,它通常会带来更多的流量以及更高的回报。
  同构 JavaScript 应用
  同构 JavaScript 应用基于 JavaScript 编写,可以在客户端和服务端运行。正因为此,你只需要写一次代码,就可以在服务端渲染静态页面,还可以在客户端完成复杂的交互。所以,这种方式互通了两个世界,并且避免了前面提到了两个问题。
  现在,有很多框架可以帮助你开发这类应用。其中最著名的一个可能是 Meteor。Meter 是一个开源 JavaScript 框架,基于 Node.js 编写,专注于实时 web 应用。我想提到的另一个项目是 Rendr,它是 Airbnb 开发的一款轻量级类库,准许同时在客户端和服务端运行 Backbone.js。
  越来越多的公司将 Node.js 应用到他们的产品中。客户端和服务端的代码共享成为一个更加普通而自然的选择。在我看来,这种做法将是 web 开发的未来。有些类库通过共享模板又增强了这一趋势,比如 React。
  结论
  这篇文章介绍了同构 JavaScript 应用的概念,它是应用开发的一种全新方式,可以最大限度地结合服务端和客户端应用程序。我们还讨论了运用这种方式尝试解决的问题,以及你现在就可以参与实践的一些项目。
  你听说过同构 JavaScript 应用么?你开发过么?你有开发经验么?
  原文:Isomorphic JavaScript Applications — the Future of the Web? 查看全部

  js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?
  Web 世界有一个至理名言,就是 Java 提出的“Write once, run everywhere”。但这句话只适用于 Java 么?我们能否也用它来形容 JavaScript 呢?答案是 Yes。
  我将会在这篇文章中介绍同构 JavaScript 应用的概念,并推荐一些资源帮助你构建此类应用。
  一路走来
  多年以前,web 只是一些由 HTML 和 CSS 搭建的静态页面,没有太多的交互。用户的每一个动作都需要服务器来创建并返回一个完整的页面。幸而有了 JavaScript,开发者开始创建很棒的效果,不过 Ajax 的到来才是这场革新的真正开始。Web 开发者开始编写能够与服务端进行交互,且在不重载页面的情况下向服务端发送并接受数据的页面。
  随着时间的推移,客户端代码可以做的事情越来越多,催生了被称作单页面应用(SPA)的一类应用。SPA 在首次加载页面时就获取了所有必需的资源,或者再按需动态加载并且渲染到页面上。 Gmail 和 StackEdit editor 是很棒的 SPA 示例。
  SPA 准许重度的交互设计,因为几乎所有的操作都在客户端执行,保持最低限度地与服务端进行交流。不幸的是,它们也存在一些严重的问题,我们选择几个进行讨论。
  性能
  因为相对于静态页面,SPA 需要更多的客户端代码,需要下载数据的体积也更大。这使得手机加载速度很慢,可能会导致一些极端的状况 —— 比如糟糕的用户体验以及收入上的损失等。依据 Microsoft 的一篇文章 ——
  Bing 的一项研究表明:页面的加载时间每增加 10ms,站点年度总收入就会减少 $250K。
  SEO
  因为单页面应用依赖于 JavaScript 的执行,服务器不会提供它们可能用到的任何 HTML 内容。因此,web 爬虫很难去索引到这些页面。爬虫就是可以向 web 服务器发送请求,并且将结果分析成原始文本的程序,而不需要像一个浏览器运行 JavaScript 那样解释和执行客户端的内容。不久前,Google 优化了搜索引擎的 web 爬虫,现在它也可以抓取基于客户端 JavaScript 所构建的页面了。但是 Bing、Yahoo 以及其他搜索引擎怎么办?一个好的索引对任何公司来说都至关重要,它通常会带来更多的流量以及更高的回报。
  同构 JavaScript 应用
  同构 JavaScript 应用基于 JavaScript 编写,可以在客户端和服务端运行。正因为此,你只需要写一次代码,就可以在服务端渲染静态页面,还可以在客户端完成复杂的交互。所以,这种方式互通了两个世界,并且避免了前面提到了两个问题。
  现在,有很多框架可以帮助你开发这类应用。其中最著名的一个可能是 Meteor。Meter 是一个开源 JavaScript 框架,基于 Node.js 编写,专注于实时 web 应用。我想提到的另一个项目是 Rendr,它是 Airbnb 开发的一款轻量级类库,准许同时在客户端和服务端运行 Backbone.js。
  越来越多的公司将 Node.js 应用到他们的产品中。客户端和服务端的代码共享成为一个更加普通而自然的选择。在我看来,这种做法将是 web 开发的未来。有些类库通过共享模板又增强了这一趋势,比如 React。
  结论
  这篇文章介绍了同构 JavaScript 应用的概念,它是应用开发的一种全新方式,可以最大限度地结合服务端和客户端应用程序。我们还讨论了运用这种方式尝试解决的问题,以及你现在就可以参与实践的一些项目。
  你听说过同构 JavaScript 应用么?你开发过么?你有开发经验么?
  原文:Isomorphic JavaScript Applications — the Future of the Web?

js抓取网页内容 JavaScript SEO怎么做

网站优化优采云 发表了文章 • 0 个评论 • 43 次浏览 • 2022-05-28 22:03 • 来自相关话题

  js抓取网页内容 JavaScript SEO怎么做
  点击可听原文音频
  Hi. I’m Charles from Cross Border Digital. Are you using JavaScript to build your website? Or maybe you're thinking about using one of the modern JavaScript frameworks like Ember,or Node, or React, or Angular. Great frameworks for building very app-like interfaces on the web.
  大家好,我是来自Cross Border Digital的Charles. 你是否在用JavaScript建站?或者你正在考虑用使用当前比较流行的JavaScript框架:Ember、Node、React 或者是Angular建站。这些都是非常优秀的框架,给网站访客提供类似App的操作体验。
  But there are some specific challenges to using these JavaScript frameworks when it comes to SEO. Today, I want to share some insights and advice to help you use these frameworks in a way that will work with Google and ensure that you can rank your website.
  但是,当涉及到SEO时,使用这些JavaScript框架存在一些特定的挑战。今天,我想分享一些见解和建议,以帮助您以与Google兼容的方式使用这些框架,确保网站在搜索引擎可以获得排名。
  So when it comes to understanding the implications of using JavaScript to build your website, there's really two key things that we need to talk about.
  因此,在理解使用JavaScript开发网站的意味着什么时,实际上需要讨论两个关键问题。
  The first is how Google actually works, how they treat JavaScript, how they understand JavaScript.
  首先是Google的实际工作方式,如何对待JavaScript,如何理解JavaScript。
  And the second is understanding the difference between client-side and server-side rendering of the content and HTML on your website.
  其次是了解网站上内容和HTML在客户端和服务器端渲染的区别。
  These two things together if we can understand these, then we can understand how Google is going to interpret our JavaScript-powered website.
  如果我们能理解这两点,那么就能了解Google如何读取JavaScript网站。
  OK, so let's first talk about Google. There are in fact two parts to Google's crawling and indexing of the web.
  首先来讨论一下谷歌运作方式。谷歌爬取收录网站可以分为两部分:
  The first part, the crawler known as Google bot is the part of the infrastructure that follows every link it can find on the web to uncover every URL on your website and on every other website on the web. The Google bot crawler can't render JavaScript. It's simply visits a page. It will do a very quick pass of any HTML that it finds on the page to see if there are any other links it can follow, but otherwise, it simply passes the URLs that it does find back to the indexer.
  第一部分,被称为Googlebot的爬虫,是搜索引擎基础结构的一部分,它通过页面上的链接,去发现更多的页面。Google bot爬虫无法渲染JavaScript。它只是访问页面。爬虫会快速查找HTML页面上的链接,继续抓取新的页面,没有新页面就会将爬取到的链接返回谷歌索引(indexer)。
  The indexer is the part of Google's infrastructure that completely renders a page of all the content, all of the CSS, all of the layout to try in the content, to try and understand what that page is about. So that when someone does a query, it can return that page if it is relevant. Now the indexer can render JavaScript.
  索引是Google搜索引擎基础结构的一部分,它负责渲染页面的所有内容,CSS,布局以了解该页面的核心信息。当用户在搜索引擎搜索时,才能返回客户搜索相关的页面。Indexer可以渲染JavaScript。
  So it is true to say that Google can render JavaScript-powered web pages.
  因此,谷歌支持渲染基于JavaScript开发的网页。
  But to completely understand the implications of using JavaScript, it is also important to understand the difference between client-side and server-side rendering of JavaScript, because that makes a big difference to the way that Google will interpret your website.
  但是要完全了解使用JavaScript对网站的影响,理解客户端和服务器端JavaScript渲染的区别也很重要,因为会导致Google读取网站的方式有很大的不同。
  So generally speaking, these modern JavaScript frameworks like React, Node, and Ember, and Angular, they render in the client side. That means that when someone visits your web page that's built on one of these frameworks, the JavaScript application is delivered to the browser and then it renders everything in the browser. It calls the CSS, it calls the content, it calls the images, and any other resources required to lay out your web page into the browser and renders them on the client side.
  因此,一般而言,这些现代JavaScript框架(例如React,Node和Ember和Angular)在客户端渲染。这意味着,当用户访问基于这些框架之一开发的网页时,JavaScript应用程序将交付给浏览器,然后在浏览器渲染所有内容。将CSS,文本,图片以及其他与页面展示有关的资源推送到浏览器,在客户端渲染。
  A server side rendering is when all of that work is done on the server and the HTML of the complete page and all of the content is delivered to the browser.
  服务器端渲染是指在服务器端完成所有渲染工作并将完整页面的HTML和所有内容都交付给浏览器。
  Now this has big implications for Google because as we said, the Google bot can't render JavaScript. So that means that when Google bot visits your home page or your JavaScript-powered website, if you're rendering client side, it means that the Google bot will get that JavaScript application, but it can't render any content or any link. So it won't find any other links to crawl. It will have to send that single URL back to the indexer. The indexer will then render that page it will find any links and content on that page. It will send any links back to the crawler so that they can then continue to follow those you URLs to see if they can find any other links.
  这就对Google收录网站产生了重大影响,因为前面所说,Google bot无法渲染JavaScript。因此,这意味着当Googlebot访问您的主页或基于JavaScript的网站时,如果网站是客户端渲染,则意味着Googlebot将获取该JavaScript应用程序,但无法渲染任何内容或任何链接。因此Google bot无法找到页面上的链接。只会返回一个URL给谷歌indexer。谷歌Indexer将渲染页面并发现页面上的更多链接和内容。发现新的链接则会返回给Google bot去继续抓取进一步发现更多的链接。
  And in this way, it really slows down the process of crawling your website in a very big way.And this is particularly relevant for large websites. So the other thing that I have to say about client-side rendering is that Google's indexer uses a version of Chrome for rendering JavaScript-powered websites that is about three years old.
  这就极大地减慢了网站被谷歌抓取的速度,这对于大型网站影响尤为重大。另外,关于客户端渲染,Google的indexer用来来渲染JavaScript网站所使用的Chrome版本已有大约三年的历史。
  And that means that it can't support all the latest features of these modern JavaScript frameworks. So if you're building a JavaScript-powered website that renders on the client side, it is very important that you ensure that it is set up in such a way that it degrades nicely forolder versions of browsers so that Google can render your content and your HTML completely.
  这意味着它不能支持那些现代JavaScript框架的所有最新功能。因此,如果您要构建一个以JavaScript为基础的网站,并在客户端进行渲染,那么确保Google可以完全渲染您的内容和HTML。
  I've seen many cases where a client-side rendered JavaScript page, Google is able to crawl or index part of it but it doesn't see all of the continent because of some of the features that have been included in that page. So very important that your JavaScript-powered web page degrades nicely for all the versions of the browser.
  我看过很多客户端渲染的JavaScript页面,Google能够对其进行抓取和编制索引,但是页面中包含的某些功能谷歌无法完整抓取。因此要确保你基于JavaScript开发网页对于所有版本的浏览器都可以很好地渲染。
  So we know that Google bot can't render JavaScript. And whilst the Google indexer can render JavaScript, we also know that it is limited to older versions of Chrome. So it doesn't support all the latest features of these modern JavaScript frameworks. So if we are doing client-side rendering, it is more difficult to get all of our content indexed and it really does slow down the entire process of crawling and indexing your website, which includes any changes you make. So if you make changes to your website, particularly if you have a large website, it can take weeks or months for those changes to be reflected in the Google index.
  我们知道Google bot无法渲染JavaScript。Google indexer可以呈现JavaScript,但我们也知道它仅限于旧版Chrome。因此,它不支持这些现代JavaScript框架的所有最新功能。因此,如果在进行客户端渲染,则很难对所有的内容建立索引,这确实会减慢对网站被抓取和索引的整个过程,其中包括您所做的任何更改。因此,如果您对网站进行更改,尤其大型网站,则这些更改可能需要数周或数月才能反映在Google索引中。
  So what to do? Well, our strong recommendation is to use old-fashioned content management systems for public facing web sites, first and foremost. If you haven't yet startedthe build of your website, then we would strongly recommend you look at one of the content management systems like Ambraco, or Wordpress, or Drupal. Or if you're doing e-commerce, use one of the platforms like Shopify, or BigCommerce.
  那么该怎么办?我们强烈建议普通网站使用老式的内容管理系统。如果您还没有开始网站的搭建,那么我们强烈建议您考虑内容管理系统,例如Ambraco,Wordpress或Drupal。如果是电商网站,可以考虑用Shopify, BigCommerce电商建站系统。
  These content management applications render everything on the server side and deliver the complete HTML to the browser and to Google, which makes it much easier and faster for Google to completely crawl and index your website.
  这些内容管理应用程序在服务器端呈现所有内容,并向浏览器和Google提供完整的HTML,这使Google能够更轻松,更快地完全抓取您的网站并为其建立索引。
  If you have already built a JavaScript-powered website, or if you really want to for whatever reason, then our drawing recommendation is to configure that application to render everything on the server side and deliver the complete HTML and content to the browser and to Google in the same way that one of these older traditional content management systems does. If you can do that properly, then it will make it a lot easier and faster for Google to index your JavaScript-powered website.
  如果您已经建立了JavaScript网站,或者出于特殊原因确实想要这样做,那么我们的建议是配置该应用程序在服务器端渲染所有内容,并将完整的HTML和内容提供给浏览器和Google 就像这些较旧的传统内容管理系统之一一样。这对于谷歌快速抓取收录你的JavaScript网站会有很大帮助。
  Perhaps, you've already launched a JavaScript-powered website that is rendering everything on the client side. You're not sure how to configure it to do that on the server side. There are third party services like Prerender.io, which might help. They might be worth looking at as well.
  又或许,您已经发布了一个在客户端渲染的基于JavaScript开发的网站,不知道如何改为在服务器端渲染。有一些第三方服务获取可以帮你解决这个问题,比如Prerender.io。可以了解一下。
  So in a nutshell, a lot of SEO is about making it easy for Google and not putting hurdles in Google's way. And when it comes to using JavaScript on your website, there are quite a fewpitfalls and traps that if you're not aware of them, it's easy to fall into.
  简而言之,很多SEO都是为了帮助Google而不是阻碍Google抓取网站。在您的网站上使用JavaScript时,会有很多陷阱,稍不小心就掉入。
  So if you have any questions, we would love to help. So hit us up here on WeChat. We could have you to discuss your specific case and we look forward to talking to you. Thanks.
  如果您有任何疑问,欢迎联系我们微信小编。期待与您交流,谢谢大家。
   查看全部

  js抓取网页内容 JavaScript SEO怎么做
  点击可听原文音频
  Hi. I’m Charles from Cross Border Digital. Are you using JavaScript to build your website? Or maybe you're thinking about using one of the modern JavaScript frameworks like Ember,or Node, or React, or Angular. Great frameworks for building very app-like interfaces on the web.
  大家好,我是来自Cross Border Digital的Charles. 你是否在用JavaScript建站?或者你正在考虑用使用当前比较流行的JavaScript框架:Ember、Node、React 或者是Angular建站。这些都是非常优秀的框架,给网站访客提供类似App的操作体验。
  But there are some specific challenges to using these JavaScript frameworks when it comes to SEO. Today, I want to share some insights and advice to help you use these frameworks in a way that will work with Google and ensure that you can rank your website.
  但是,当涉及到SEO时,使用这些JavaScript框架存在一些特定的挑战。今天,我想分享一些见解和建议,以帮助您以与Google兼容的方式使用这些框架,确保网站在搜索引擎可以获得排名。
  So when it comes to understanding the implications of using JavaScript to build your website, there's really two key things that we need to talk about.
  因此,在理解使用JavaScript开发网站的意味着什么时,实际上需要讨论两个关键问题。
  The first is how Google actually works, how they treat JavaScript, how they understand JavaScript.
  首先是Google的实际工作方式,如何对待JavaScript,如何理解JavaScript。
  And the second is understanding the difference between client-side and server-side rendering of the content and HTML on your website.
  其次是了解网站上内容和HTML在客户端和服务器端渲染的区别。
  These two things together if we can understand these, then we can understand how Google is going to interpret our JavaScript-powered website.
  如果我们能理解这两点,那么就能了解Google如何读取JavaScript网站。
  OK, so let's first talk about Google. There are in fact two parts to Google's crawling and indexing of the web.
  首先来讨论一下谷歌运作方式。谷歌爬取收录网站可以分为两部分:
  The first part, the crawler known as Google bot is the part of the infrastructure that follows every link it can find on the web to uncover every URL on your website and on every other website on the web. The Google bot crawler can't render JavaScript. It's simply visits a page. It will do a very quick pass of any HTML that it finds on the page to see if there are any other links it can follow, but otherwise, it simply passes the URLs that it does find back to the indexer.
  第一部分,被称为Googlebot的爬虫,是搜索引擎基础结构的一部分,它通过页面上的链接,去发现更多的页面。Google bot爬虫无法渲染JavaScript。它只是访问页面。爬虫会快速查找HTML页面上的链接,继续抓取新的页面,没有新页面就会将爬取到的链接返回谷歌索引(indexer)。
  The indexer is the part of Google's infrastructure that completely renders a page of all the content, all of the CSS, all of the layout to try in the content, to try and understand what that page is about. So that when someone does a query, it can return that page if it is relevant. Now the indexer can render JavaScript.
  索引是Google搜索引擎基础结构的一部分,它负责渲染页面的所有内容,CSS,布局以了解该页面的核心信息。当用户在搜索引擎搜索时,才能返回客户搜索相关的页面。Indexer可以渲染JavaScript。
  So it is true to say that Google can render JavaScript-powered web pages.
  因此,谷歌支持渲染基于JavaScript开发的网页。
  But to completely understand the implications of using JavaScript, it is also important to understand the difference between client-side and server-side rendering of JavaScript, because that makes a big difference to the way that Google will interpret your website.
  但是要完全了解使用JavaScript对网站的影响,理解客户端和服务器端JavaScript渲染的区别也很重要,因为会导致Google读取网站的方式有很大的不同。
  So generally speaking, these modern JavaScript frameworks like React, Node, and Ember, and Angular, they render in the client side. That means that when someone visits your web page that's built on one of these frameworks, the JavaScript application is delivered to the browser and then it renders everything in the browser. It calls the CSS, it calls the content, it calls the images, and any other resources required to lay out your web page into the browser and renders them on the client side.
  因此,一般而言,这些现代JavaScript框架(例如React,Node和Ember和Angular)在客户端渲染。这意味着,当用户访问基于这些框架之一开发的网页时,JavaScript应用程序将交付给浏览器,然后在浏览器渲染所有内容。将CSS,文本,图片以及其他与页面展示有关的资源推送到浏览器,在客户端渲染。
  A server side rendering is when all of that work is done on the server and the HTML of the complete page and all of the content is delivered to the browser.
  服务器端渲染是指在服务器端完成所有渲染工作并将完整页面的HTML和所有内容都交付给浏览器。
  Now this has big implications for Google because as we said, the Google bot can't render JavaScript. So that means that when Google bot visits your home page or your JavaScript-powered website, if you're rendering client side, it means that the Google bot will get that JavaScript application, but it can't render any content or any link. So it won't find any other links to crawl. It will have to send that single URL back to the indexer. The indexer will then render that page it will find any links and content on that page. It will send any links back to the crawler so that they can then continue to follow those you URLs to see if they can find any other links.
  这就对Google收录网站产生了重大影响,因为前面所说,Google bot无法渲染JavaScript。因此,这意味着当Googlebot访问您的主页或基于JavaScript的网站时,如果网站是客户端渲染,则意味着Googlebot将获取该JavaScript应用程序,但无法渲染任何内容或任何链接。因此Google bot无法找到页面上的链接。只会返回一个URL给谷歌indexer。谷歌Indexer将渲染页面并发现页面上的更多链接和内容。发现新的链接则会返回给Google bot去继续抓取进一步发现更多的链接。
  And in this way, it really slows down the process of crawling your website in a very big way.And this is particularly relevant for large websites. So the other thing that I have to say about client-side rendering is that Google's indexer uses a version of Chrome for rendering JavaScript-powered websites that is about three years old.
  这就极大地减慢了网站被谷歌抓取的速度,这对于大型网站影响尤为重大。另外,关于客户端渲染,Google的indexer用来来渲染JavaScript网站所使用的Chrome版本已有大约三年的历史。
  And that means that it can't support all the latest features of these modern JavaScript frameworks. So if you're building a JavaScript-powered website that renders on the client side, it is very important that you ensure that it is set up in such a way that it degrades nicely forolder versions of browsers so that Google can render your content and your HTML completely.
  这意味着它不能支持那些现代JavaScript框架的所有最新功能。因此,如果您要构建一个以JavaScript为基础的网站,并在客户端进行渲染,那么确保Google可以完全渲染您的内容和HTML。
  I've seen many cases where a client-side rendered JavaScript page, Google is able to crawl or index part of it but it doesn't see all of the continent because of some of the features that have been included in that page. So very important that your JavaScript-powered web page degrades nicely for all the versions of the browser.
  我看过很多客户端渲染的JavaScript页面,Google能够对其进行抓取和编制索引,但是页面中包含的某些功能谷歌无法完整抓取。因此要确保你基于JavaScript开发网页对于所有版本的浏览器都可以很好地渲染。
  So we know that Google bot can't render JavaScript. And whilst the Google indexer can render JavaScript, we also know that it is limited to older versions of Chrome. So it doesn't support all the latest features of these modern JavaScript frameworks. So if we are doing client-side rendering, it is more difficult to get all of our content indexed and it really does slow down the entire process of crawling and indexing your website, which includes any changes you make. So if you make changes to your website, particularly if you have a large website, it can take weeks or months for those changes to be reflected in the Google index.
  我们知道Google bot无法渲染JavaScript。Google indexer可以呈现JavaScript,但我们也知道它仅限于旧版Chrome。因此,它不支持这些现代JavaScript框架的所有最新功能。因此,如果在进行客户端渲染,则很难对所有的内容建立索引,这确实会减慢对网站被抓取和索引的整个过程,其中包括您所做的任何更改。因此,如果您对网站进行更改,尤其大型网站,则这些更改可能需要数周或数月才能反映在Google索引中。
  So what to do? Well, our strong recommendation is to use old-fashioned content management systems for public facing web sites, first and foremost. If you haven't yet startedthe build of your website, then we would strongly recommend you look at one of the content management systems like Ambraco, or Wordpress, or Drupal. Or if you're doing e-commerce, use one of the platforms like Shopify, or BigCommerce.
  那么该怎么办?我们强烈建议普通网站使用老式的内容管理系统。如果您还没有开始网站的搭建,那么我们强烈建议您考虑内容管理系统,例如Ambraco,Wordpress或Drupal。如果是电商网站,可以考虑用Shopify, BigCommerce电商建站系统。
  These content management applications render everything on the server side and deliver the complete HTML to the browser and to Google, which makes it much easier and faster for Google to completely crawl and index your website.
  这些内容管理应用程序在服务器端呈现所有内容,并向浏览器和Google提供完整的HTML,这使Google能够更轻松,更快地完全抓取您的网站并为其建立索引。
  If you have already built a JavaScript-powered website, or if you really want to for whatever reason, then our drawing recommendation is to configure that application to render everything on the server side and deliver the complete HTML and content to the browser and to Google in the same way that one of these older traditional content management systems does. If you can do that properly, then it will make it a lot easier and faster for Google to index your JavaScript-powered website.
  如果您已经建立了JavaScript网站,或者出于特殊原因确实想要这样做,那么我们的建议是配置该应用程序在服务器端渲染所有内容,并将完整的HTML和内容提供给浏览器和Google 就像这些较旧的传统内容管理系统之一一样。这对于谷歌快速抓取收录你的JavaScript网站会有很大帮助。
  Perhaps, you've already launched a JavaScript-powered website that is rendering everything on the client side. You're not sure how to configure it to do that on the server side. There are third party services like Prerender.io, which might help. They might be worth looking at as well.
  又或许,您已经发布了一个在客户端渲染的基于JavaScript开发的网站,不知道如何改为在服务器端渲染。有一些第三方服务获取可以帮你解决这个问题,比如Prerender.io。可以了解一下。
  So in a nutshell, a lot of SEO is about making it easy for Google and not putting hurdles in Google's way. And when it comes to using JavaScript on your website, there are quite a fewpitfalls and traps that if you're not aware of them, it's easy to fall into.
  简而言之,很多SEO都是为了帮助Google而不是阻碍Google抓取网站。在您的网站上使用JavaScript时,会有很多陷阱,稍不小心就掉入。
  So if you have any questions, we would love to help. So hit us up here on WeChat. We could have you to discuss your specific case and we look forward to talking to you. Thanks.
  如果您有任何疑问,欢迎联系我们微信小编。期待与您交流,谢谢大家。
  

js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?

网站优化优采云 发表了文章 • 0 个评论 • 53 次浏览 • 2022-05-28 21:50 • 来自相关话题

  js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?
  Web 世界有一个至理名言,就是 Java 提出的“Write once, run everywhere”。但这句话只适用于 Java 么?我们能否也用它来形容 JavaScript 呢?答案是 Yes。
  我将会在这篇文章中介绍同构 JavaScript 应用的概念,并推荐一些资源帮助你构建此类应用。
  一路走来
  多年以前,web 只是一些由 HTML 和 CSS 搭建的静态页面,没有太多的交互。用户的每一个动作都需要服务器来创建并返回一个完整的页面。幸而有了 JavaScript,开发者开始创建很棒的效果,不过 Ajax 的到来才是这场革新的真正开始。Web 开发者开始编写能够与服务端进行交互,且在不重载页面的情况下向服务端发送并接受数据的页面。
  随着时间的推移,客户端代码可以做的事情越来越多,催生了被称作单页面应用(SPA)的一类应用。SPA 在首次加载页面时就获取了所有必需的资源,或者再按需动态加载并且渲染到页面上。 Gmail 和 StackEdit editor 是很棒的 SPA 示例。
  SPA 准许重度的交互设计,因为几乎所有的操作都在客户端执行,保持最低限度地与服务端进行交流。不幸的是,它们也存在一些严重的问题,我们选择几个进行讨论。
  性能
  因为相对于静态页面,SPA 需要更多的客户端代码,需要下载数据的体积也更大。这使得手机加载速度很慢,可能会导致一些极端的状况 —— 比如糟糕的用户体验以及收入上的损失等。依据 Microsoft 的一篇文章 ——
  Bing 的一项研究表明:页面的加载时间每增加 10ms,站点年度总收入就会减少 $250K。
  SEO
  因为单页面应用依赖于 JavaScript 的执行,服务器不会提供它们可能用到的任何 HTML 内容。因此,web 爬虫很难去索引到这些页面。爬虫就是可以向 web 服务器发送请求,并且将结果分析成原始文本的程序,而不需要像一个浏览器运行 JavaScript 那样解释和执行客户端的内容。不久前,Google 优化了搜索引擎的 web 爬虫,现在它也可以抓取基于客户端 JavaScript 所构建的页面了。但是 Bing、Yahoo 以及其他搜索引擎怎么办?一个好的索引对任何公司来说都至关重要,它通常会带来更多的流量以及更高的回报。
  同构 JavaScript 应用
  同构 JavaScript 应用基于 JavaScript 编写,可以在客户端和服务端运行。正因为此,你只需要写一次代码,就可以在服务端渲染静态页面,还可以在客户端完成复杂的交互。所以,这种方式互通了两个世界,并且避免了前面提到了两个问题。
  现在,有很多框架可以帮助你开发这类应用。其中最著名的一个可能是 Meteor。Meter 是一个开源 JavaScript 框架,基于 Node.js 编写,专注于实时 web 应用。我想提到的另一个项目是 Rendr,它是 Airbnb 开发的一款轻量级类库,准许同时在客户端和服务端运行 Backbone.js。
  越来越多的公司将 Node.js 应用到他们的产品中。客户端和服务端的代码共享成为一个更加普通而自然的选择。在我看来,这种做法将是 web 开发的未来。有些类库通过共享模板又增强了这一趋势,比如 React。
  结论
  这篇文章介绍了同构 JavaScript 应用的概念,它是应用开发的一种全新方式,可以最大限度地结合服务端和客户端应用程序。我们还讨论了运用这种方式尝试解决的问题,以及你现在就可以参与实践的一些项目。
  你听说过同构 JavaScript 应用么?你开发过么?你有开发经验么?
  原文:Isomorphic JavaScript Applications — the Future of the Web? 查看全部

  js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?
  Web 世界有一个至理名言,就是 Java 提出的“Write once, run everywhere”。但这句话只适用于 Java 么?我们能否也用它来形容 JavaScript 呢?答案是 Yes。
  我将会在这篇文章中介绍同构 JavaScript 应用的概念,并推荐一些资源帮助你构建此类应用。
  一路走来
  多年以前,web 只是一些由 HTML 和 CSS 搭建的静态页面,没有太多的交互。用户的每一个动作都需要服务器来创建并返回一个完整的页面。幸而有了 JavaScript,开发者开始创建很棒的效果,不过 Ajax 的到来才是这场革新的真正开始。Web 开发者开始编写能够与服务端进行交互,且在不重载页面的情况下向服务端发送并接受数据的页面。
  随着时间的推移,客户端代码可以做的事情越来越多,催生了被称作单页面应用(SPA)的一类应用。SPA 在首次加载页面时就获取了所有必需的资源,或者再按需动态加载并且渲染到页面上。 Gmail 和 StackEdit editor 是很棒的 SPA 示例。
  SPA 准许重度的交互设计,因为几乎所有的操作都在客户端执行,保持最低限度地与服务端进行交流。不幸的是,它们也存在一些严重的问题,我们选择几个进行讨论。
  性能
  因为相对于静态页面,SPA 需要更多的客户端代码,需要下载数据的体积也更大。这使得手机加载速度很慢,可能会导致一些极端的状况 —— 比如糟糕的用户体验以及收入上的损失等。依据 Microsoft 的一篇文章 ——
  Bing 的一项研究表明:页面的加载时间每增加 10ms,站点年度总收入就会减少 $250K。
  SEO
  因为单页面应用依赖于 JavaScript 的执行,服务器不会提供它们可能用到的任何 HTML 内容。因此,web 爬虫很难去索引到这些页面。爬虫就是可以向 web 服务器发送请求,并且将结果分析成原始文本的程序,而不需要像一个浏览器运行 JavaScript 那样解释和执行客户端的内容。不久前,Google 优化了搜索引擎的 web 爬虫,现在它也可以抓取基于客户端 JavaScript 所构建的页面了。但是 Bing、Yahoo 以及其他搜索引擎怎么办?一个好的索引对任何公司来说都至关重要,它通常会带来更多的流量以及更高的回报。
  同构 JavaScript 应用
  同构 JavaScript 应用基于 JavaScript 编写,可以在客户端和服务端运行。正因为此,你只需要写一次代码,就可以在服务端渲染静态页面,还可以在客户端完成复杂的交互。所以,这种方式互通了两个世界,并且避免了前面提到了两个问题。
  现在,有很多框架可以帮助你开发这类应用。其中最著名的一个可能是 Meteor。Meter 是一个开源 JavaScript 框架,基于 Node.js 编写,专注于实时 web 应用。我想提到的另一个项目是 Rendr,它是 Airbnb 开发的一款轻量级类库,准许同时在客户端和服务端运行 Backbone.js。
  越来越多的公司将 Node.js 应用到他们的产品中。客户端和服务端的代码共享成为一个更加普通而自然的选择。在我看来,这种做法将是 web 开发的未来。有些类库通过共享模板又增强了这一趋势,比如 React。
  结论
  这篇文章介绍了同构 JavaScript 应用的概念,它是应用开发的一种全新方式,可以最大限度地结合服务端和客户端应用程序。我们还讨论了运用这种方式尝试解决的问题,以及你现在就可以参与实践的一些项目。
  你听说过同构 JavaScript 应用么?你开发过么?你有开发经验么?
  原文:Isomorphic JavaScript Applications — the Future of the Web?

js抓取网页内容 【第2030期】JavaScript 启动性能瓶颈分析与解决方案

网站优化优采云 发表了文章 • 0 个评论 • 49 次浏览 • 2022-05-26 16:06 • 来自相关话题

  js抓取网页内容 【第2030期】JavaScript 启动性能瓶颈分析与解决方案
  前言
  找到它存在的意义。今日早读文章由@王下邀月熊翻译授权分享。
  正文从这开始~~
  在 Web 开发中,随着需求的增加与代码库的扩张,我们最终发布的 Web 页面也逐渐膨胀。不过这种膨胀远不止意味着占据更多的传输带宽,其还意味着用户浏览网页时可能更差劲的性能体验。浏览器在下载完某个页面依赖的脚本之后,其还需要经过语法分析、解释与运行这些步骤。而本文则会深入分析浏览器对于 JavaScript 的这些处理流程,挖掘出那些影响你应用启动时间的罪魁祸首,并且根据我个人的经验提出相对应的解决方案。回顾过去,我们还没有专门地考虑过如何去优化 JavaScript 解析/编译这些步骤;我们预想中的是解析器在发现 查看全部

  js抓取网页内容 【第2030期】JavaScript 启动性能瓶颈分析与解决方案
  前言
  找到它存在的意义。今日早读文章由@王下邀月熊翻译授权分享。
  正文从这开始~~
  在 Web 开发中,随着需求的增加与代码库的扩张,我们最终发布的 Web 页面也逐渐膨胀。不过这种膨胀远不止意味着占据更多的传输带宽,其还意味着用户浏览网页时可能更差劲的性能体验。浏览器在下载完某个页面依赖的脚本之后,其还需要经过语法分析、解释与运行这些步骤。而本文则会深入分析浏览器对于 JavaScript 的这些处理流程,挖掘出那些影响你应用启动时间的罪魁祸首,并且根据我个人的经验提出相对应的解决方案。回顾过去,我们还没有专门地考虑过如何去优化 JavaScript 解析/编译这些步骤;我们预想中的是解析器在发现

js抓取网页内容 JavaScript SEO怎么做

网站优化优采云 发表了文章 • 0 个评论 • 73 次浏览 • 2022-05-16 13:24 • 来自相关话题

  js抓取网页内容 JavaScript SEO怎么做
  点击可听原文音频
  Hi. I’m Charles from Cross Border Digital. Are you using JavaScript to build your website? Or maybe you're thinking about using one of the modern JavaScript frameworks like Ember,or Node, or React, or Angular. Great frameworks for building very app-like interfaces on the web.
  大家好,我是来自Cross Border Digital的Charles. 你是否在用JavaScript建站?或者你正在考虑用使用当前比较流行的JavaScript框架:Ember、Node、React 或者是Angular建站。这些都是非常优秀的框架,给网站访客提供类似App的操作体验。
  But there are some specific challenges to using these JavaScript frameworks when it comes to SEO. Today, I want to share some insights and advice to help you use these frameworks in a way that will work with Google and ensure that you can rank your website.
  但是,当涉及到SEO时,使用这些JavaScript框架存在一些特定的挑战。今天,我想分享一些见解和建议,以帮助您以与Google兼容的方式使用这些框架,确保网站在搜索引擎可以获得排名。
  So when it comes to understanding the implications of using JavaScript to build your website, there's really two key things that we need to talk about.
  因此,在理解使用JavaScript开发网站的意味着什么时,实际上需要讨论两个关键问题。
  The first is how Google actually works, how they treat JavaScript, how they understand JavaScript.
  首先是Google的实际工作方式,如何对待JavaScript,如何理解JavaScript。
  And the second is understanding the difference between client-side and server-side rendering of the content and HTML on your website.
  其次是了解网站上内容和HTML在客户端和服务器端渲染的区别。
  These two things together if we can understand these, then we can understand how Google is going to interpret our JavaScript-powered website.
  如果我们能理解这两点,那么就能了解Google如何读取JavaScript网站。
  OK, so let's first talk about Google. There are in fact two parts to Google's crawling and indexing of the web.
  首先来讨论一下谷歌运作方式。谷歌爬取收录网站可以分为两部分:
  The first part, the crawler known as Google bot is the part of the infrastructure that follows every link it can find on the web to uncover every URL on your website and on every other website on the web. The Google bot crawler can't render JavaScript. It's simply visits a page. It will do a very quick pass of any HTML that it finds on the page to see if there are any other links it can follow, but otherwise, it simply passes the URLs that it does find back to the indexer.
  第一部分,被称为Googlebot的爬虫,是搜索引擎基础结构的一部分,它通过页面上的链接,去发现更多的页面。Google bot爬虫无法渲染JavaScript。它只是访问页面。爬虫会快速查找HTML页面上的链接,继续抓取新的页面,没有新页面就会将爬取到的链接返回谷歌索引(indexer)。
  The indexer is the part of Google's infrastructure that completely renders a page of all the content, all of the CSS, all of the layout to try in the content, to try and understand what that page is about. So that when someone does a query, it can return that page if it is relevant. Now the indexer can render JavaScript.
  索引是Google搜索引擎基础结构的一部分,它负责渲染页面的所有内容,CSS,布局以了解该页面的核心信息。当用户在搜索引擎搜索时,才能返回客户搜索相关的页面。Indexer可以渲染JavaScript。
  So it is true to say that Google can render JavaScript-powered web pages.
  因此,谷歌支持渲染基于JavaScript开发的网页。
  But to completely understand the implications of using JavaScript, it is also important to understand the difference between client-side and server-side rendering of JavaScript, because that makes a big difference to the way that Google will interpret your website.
  但是要完全了解使用JavaScript对网站的影响,理解客户端和服务器端JavaScript渲染的区别也很重要,因为会导致Google读取网站的方式有很大的不同。
  So generally speaking, these modern JavaScript frameworks like React, Node, and Ember, and Angular, they render in the client side. That means that when someone visits your web page that's built on one of these frameworks, the JavaScript application is delivered to the browser and then it renders everything in the browser. It calls the CSS, it calls the content, it calls the images, and any other resources required to lay out your web page into the browser and renders them on the client side.
  因此,一般而言,这些现代JavaScript框架(例如React,Node和Ember和Angular)在客户端渲染。这意味着,当用户访问基于这些框架之一开发的网页时,JavaScript应用程序将交付给浏览器,然后在浏览器渲染所有内容。将CSS,文本,图片以及其他与页面展示有关的资源推送到浏览器,在客户端渲染。
  A server side rendering is when all of that work is done on the server and the HTML of the complete page and all of the content is delivered to the browser.
  服务器端渲染是指在服务器端完成所有渲染工作并将完整页面的HTML和所有内容都交付给浏览器。
  Now this has big implications for Google because as we said, the Google bot can't render JavaScript. So that means that when Google bot visits your home page or your JavaScript-powered website, if you're rendering client side, it means that the Google bot will get that JavaScript application, but it can't render any content or any link. So it won't find any other links to crawl. It will have to send that single URL back to the indexer. The indexer will then render that page it will find any links and content on that page. It will send any links back to the crawler so that they can then continue to follow those you URLs to see if they can find any other links.
  这就对Google收录网站产生了重大影响,因为前面所说,Google bot无法渲染JavaScript。因此,这意味着当Googlebot访问您的主页或基于JavaScript的网站时,如果网站是客户端渲染,则意味着Googlebot将获取该JavaScript应用程序,但无法渲染任何内容或任何链接。因此Google bot无法找到页面上的链接。只会返回一个URL给谷歌indexer。谷歌Indexer将渲染页面并发现页面上的更多链接和内容。发现新的链接则会返回给Google bot去继续抓取进一步发现更多的链接。
  And in this way, it really slows down the process of crawling your website in a very big way.And this is particularly relevant for large websites. So the other thing that I have to say about client-side rendering is that Google's indexer uses a version of Chrome for rendering JavaScript-powered websites that is about three years old.
  这就极大地减慢了网站被谷歌抓取的速度,这对于大型网站影响尤为重大。另外,关于客户端渲染,Google的indexer用来来渲染JavaScript网站所使用的Chrome版本已有大约三年的历史。
  And that means that it can't support all the latest features of these modern JavaScript frameworks. So if you're building a JavaScript-powered website that renders on the client side, it is very important that you ensure that it is set up in such a way that it degrades nicely forolder versions of browsers so that Google can render your content and your HTML completely.
  这意味着它不能支持那些现代JavaScript框架的所有最新功能。因此,如果您要构建一个以JavaScript为基础的网站,并在客户端进行渲染,那么确保Google可以完全渲染您的内容和HTML。
  I've seen many cases where a client-side rendered JavaScript page, Google is able to crawl or index part of it but it doesn't see all of the continent because of some of the features that have been included in that page. So very important that your JavaScript-powered web page degrades nicely for all the versions of the browser.
  我看过很多客户端渲染的JavaScript页面,Google能够对其进行抓取和编制索引,但是页面中包含的某些功能谷歌无法完整抓取。因此要确保你基于JavaScript开发网页对于所有版本的浏览器都可以很好地渲染。
  So we know that Google bot can't render JavaScript. And whilst the Google indexer can render JavaScript, we also know that it is limited to older versions of Chrome. So it doesn't support all the latest features of these modern JavaScript frameworks. So if we are doing client-side rendering, it is more difficult to get all of our content indexed and it really does slow down the entire process of crawling and indexing your website, which includes any changes you make. So if you make changes to your website, particularly if you have a large website, it can take weeks or months for those changes to be reflected in the Google index.
  我们知道Google bot无法渲染JavaScript。Google indexer可以呈现JavaScript,但我们也知道它仅限于旧版Chrome。因此,它不支持这些现代JavaScript框架的所有最新功能。因此,如果在进行客户端渲染,则很难对所有的内容建立索引,这确实会减慢对网站被抓取和索引的整个过程,其中包括您所做的任何更改。因此,如果您对网站进行更改,尤其大型网站,则这些更改可能需要数周或数月才能反映在Google索引中。
  So what to do? Well, our strong recommendation is to use old-fashioned content management systems for public facing web sites, first and foremost. If you haven't yet startedthe build of your website, then we would strongly recommend you look at one of the content management systems like Ambraco, or Wordpress, or Drupal. Or if you're doing e-commerce, use one of the platforms like Shopify, or BigCommerce.
  那么该怎么办?我们强烈建议普通网站使用老式的内容管理系统。如果您还没有开始网站的搭建,那么我们强烈建议您考虑内容管理系统,例如Ambraco,Wordpress或Drupal。如果是电商网站,可以考虑用Shopify, BigCommerce电商建站系统。
  These content management applications render everything on the server side and deliver the complete HTML to the browser and to Google, which makes it much easier and faster for Google to completely crawl and index your website.
  这些内容管理应用程序在服务器端呈现所有内容,并向浏览器和Google提供完整的HTML,这使Google能够更轻松,更快地完全抓取您的网站并为其建立索引。
  If you have already built a JavaScript-powered website, or if you really want to for whatever reason, then our drawing recommendation is to configure that application to render everything on the server side and deliver the complete HTML and content to the browser and to Google in the same way that one of these older traditional content management systems does. If you can do that properly, then it will make it a lot easier and faster for Google to index your JavaScript-powered website.
  如果您已经建立了JavaScript网站,或者出于特殊原因确实想要这样做,那么我们的建议是配置该应用程序在服务器端渲染所有内容,并将完整的HTML和内容提供给浏览器和Google 就像这些较旧的传统内容管理系统之一一样。这对于谷歌快速抓取收录你的JavaScript网站会有很大帮助。
  Perhaps, you've already launched a JavaScript-powered website that is rendering everything on the client side. You're not sure how to configure it to do that on the server side. There are third party services like Prerender.io, which might help. They might be worth looking at as well.
  又或许,您已经发布了一个在客户端渲染的基于JavaScript开发的网站,不知道如何改为在服务器端渲染。有一些第三方服务获取可以帮你解决这个问题,比如Prerender.io。可以了解一下。
  So in a nutshell, a lot of SEO is about making it easy for Google and not putting hurdles in Google's way. And when it comes to using JavaScript on your website, there are quite a fewpitfalls and traps that if you're not aware of them, it's easy to fall into.
  简而言之,很多SEO都是为了帮助Google而不是阻碍Google抓取网站。在您的网站上使用JavaScript时,会有很多陷阱,稍不小心就掉入。
  So if you have any questions, we would love to help. So hit us up here on WeChat. We could have you to discuss your specific case and we look forward to talking to you. Thanks.
  如果您有任何疑问,欢迎联系我们微信小编。期待与您交流,谢谢大家。
   查看全部

  js抓取网页内容 JavaScript SEO怎么做
  点击可听原文音频
  Hi. I’m Charles from Cross Border Digital. Are you using JavaScript to build your website? Or maybe you're thinking about using one of the modern JavaScript frameworks like Ember,or Node, or React, or Angular. Great frameworks for building very app-like interfaces on the web.
  大家好,我是来自Cross Border Digital的Charles. 你是否在用JavaScript建站?或者你正在考虑用使用当前比较流行的JavaScript框架:Ember、Node、React 或者是Angular建站。这些都是非常优秀的框架,给网站访客提供类似App的操作体验。
  But there are some specific challenges to using these JavaScript frameworks when it comes to SEO. Today, I want to share some insights and advice to help you use these frameworks in a way that will work with Google and ensure that you can rank your website.
  但是,当涉及到SEO时,使用这些JavaScript框架存在一些特定的挑战。今天,我想分享一些见解和建议,以帮助您以与Google兼容的方式使用这些框架,确保网站在搜索引擎可以获得排名。
  So when it comes to understanding the implications of using JavaScript to build your website, there's really two key things that we need to talk about.
  因此,在理解使用JavaScript开发网站的意味着什么时,实际上需要讨论两个关键问题。
  The first is how Google actually works, how they treat JavaScript, how they understand JavaScript.
  首先是Google的实际工作方式,如何对待JavaScript,如何理解JavaScript。
  And the second is understanding the difference between client-side and server-side rendering of the content and HTML on your website.
  其次是了解网站上内容和HTML在客户端和服务器端渲染的区别。
  These two things together if we can understand these, then we can understand how Google is going to interpret our JavaScript-powered website.
  如果我们能理解这两点,那么就能了解Google如何读取JavaScript网站。
  OK, so let's first talk about Google. There are in fact two parts to Google's crawling and indexing of the web.
  首先来讨论一下谷歌运作方式。谷歌爬取收录网站可以分为两部分:
  The first part, the crawler known as Google bot is the part of the infrastructure that follows every link it can find on the web to uncover every URL on your website and on every other website on the web. The Google bot crawler can't render JavaScript. It's simply visits a page. It will do a very quick pass of any HTML that it finds on the page to see if there are any other links it can follow, but otherwise, it simply passes the URLs that it does find back to the indexer.
  第一部分,被称为Googlebot的爬虫,是搜索引擎基础结构的一部分,它通过页面上的链接,去发现更多的页面。Google bot爬虫无法渲染JavaScript。它只是访问页面。爬虫会快速查找HTML页面上的链接,继续抓取新的页面,没有新页面就会将爬取到的链接返回谷歌索引(indexer)。
  The indexer is the part of Google's infrastructure that completely renders a page of all the content, all of the CSS, all of the layout to try in the content, to try and understand what that page is about. So that when someone does a query, it can return that page if it is relevant. Now the indexer can render JavaScript.
  索引是Google搜索引擎基础结构的一部分,它负责渲染页面的所有内容,CSS,布局以了解该页面的核心信息。当用户在搜索引擎搜索时,才能返回客户搜索相关的页面。Indexer可以渲染JavaScript。
  So it is true to say that Google can render JavaScript-powered web pages.
  因此,谷歌支持渲染基于JavaScript开发的网页。
  But to completely understand the implications of using JavaScript, it is also important to understand the difference between client-side and server-side rendering of JavaScript, because that makes a big difference to the way that Google will interpret your website.
  但是要完全了解使用JavaScript对网站的影响,理解客户端和服务器端JavaScript渲染的区别也很重要,因为会导致Google读取网站的方式有很大的不同。
  So generally speaking, these modern JavaScript frameworks like React, Node, and Ember, and Angular, they render in the client side. That means that when someone visits your web page that's built on one of these frameworks, the JavaScript application is delivered to the browser and then it renders everything in the browser. It calls the CSS, it calls the content, it calls the images, and any other resources required to lay out your web page into the browser and renders them on the client side.
  因此,一般而言,这些现代JavaScript框架(例如React,Node和Ember和Angular)在客户端渲染。这意味着,当用户访问基于这些框架之一开发的网页时,JavaScript应用程序将交付给浏览器,然后在浏览器渲染所有内容。将CSS,文本,图片以及其他与页面展示有关的资源推送到浏览器,在客户端渲染。
  A server side rendering is when all of that work is done on the server and the HTML of the complete page and all of the content is delivered to the browser.
  服务器端渲染是指在服务器端完成所有渲染工作并将完整页面的HTML和所有内容都交付给浏览器。
  Now this has big implications for Google because as we said, the Google bot can't render JavaScript. So that means that when Google bot visits your home page or your JavaScript-powered website, if you're rendering client side, it means that the Google bot will get that JavaScript application, but it can't render any content or any link. So it won't find any other links to crawl. It will have to send that single URL back to the indexer. The indexer will then render that page it will find any links and content on that page. It will send any links back to the crawler so that they can then continue to follow those you URLs to see if they can find any other links.
  这就对Google收录网站产生了重大影响,因为前面所说,Google bot无法渲染JavaScript。因此,这意味着当Googlebot访问您的主页或基于JavaScript的网站时,如果网站是客户端渲染,则意味着Googlebot将获取该JavaScript应用程序,但无法渲染任何内容或任何链接。因此Google bot无法找到页面上的链接。只会返回一个URL给谷歌indexer。谷歌Indexer将渲染页面并发现页面上的更多链接和内容。发现新的链接则会返回给Google bot去继续抓取进一步发现更多的链接。
  And in this way, it really slows down the process of crawling your website in a very big way.And this is particularly relevant for large websites. So the other thing that I have to say about client-side rendering is that Google's indexer uses a version of Chrome for rendering JavaScript-powered websites that is about three years old.
  这就极大地减慢了网站被谷歌抓取的速度,这对于大型网站影响尤为重大。另外,关于客户端渲染,Google的indexer用来来渲染JavaScript网站所使用的Chrome版本已有大约三年的历史。
  And that means that it can't support all the latest features of these modern JavaScript frameworks. So if you're building a JavaScript-powered website that renders on the client side, it is very important that you ensure that it is set up in such a way that it degrades nicely forolder versions of browsers so that Google can render your content and your HTML completely.
  这意味着它不能支持那些现代JavaScript框架的所有最新功能。因此,如果您要构建一个以JavaScript为基础的网站,并在客户端进行渲染,那么确保Google可以完全渲染您的内容和HTML。
  I've seen many cases where a client-side rendered JavaScript page, Google is able to crawl or index part of it but it doesn't see all of the continent because of some of the features that have been included in that page. So very important that your JavaScript-powered web page degrades nicely for all the versions of the browser.
  我看过很多客户端渲染的JavaScript页面,Google能够对其进行抓取和编制索引,但是页面中包含的某些功能谷歌无法完整抓取。因此要确保你基于JavaScript开发网页对于所有版本的浏览器都可以很好地渲染。
  So we know that Google bot can't render JavaScript. And whilst the Google indexer can render JavaScript, we also know that it is limited to older versions of Chrome. So it doesn't support all the latest features of these modern JavaScript frameworks. So if we are doing client-side rendering, it is more difficult to get all of our content indexed and it really does slow down the entire process of crawling and indexing your website, which includes any changes you make. So if you make changes to your website, particularly if you have a large website, it can take weeks or months for those changes to be reflected in the Google index.
  我们知道Google bot无法渲染JavaScript。Google indexer可以呈现JavaScript,但我们也知道它仅限于旧版Chrome。因此,它不支持这些现代JavaScript框架的所有最新功能。因此,如果在进行客户端渲染,则很难对所有的内容建立索引,这确实会减慢对网站被抓取和索引的整个过程,其中包括您所做的任何更改。因此,如果您对网站进行更改,尤其大型网站,则这些更改可能需要数周或数月才能反映在Google索引中。
  So what to do? Well, our strong recommendation is to use old-fashioned content management systems for public facing web sites, first and foremost. If you haven't yet startedthe build of your website, then we would strongly recommend you look at one of the content management systems like Ambraco, or Wordpress, or Drupal. Or if you're doing e-commerce, use one of the platforms like Shopify, or BigCommerce.
  那么该怎么办?我们强烈建议普通网站使用老式的内容管理系统。如果您还没有开始网站的搭建,那么我们强烈建议您考虑内容管理系统,例如Ambraco,Wordpress或Drupal。如果是电商网站,可以考虑用Shopify, BigCommerce电商建站系统。
  These content management applications render everything on the server side and deliver the complete HTML to the browser and to Google, which makes it much easier and faster for Google to completely crawl and index your website.
  这些内容管理应用程序在服务器端呈现所有内容,并向浏览器和Google提供完整的HTML,这使Google能够更轻松,更快地完全抓取您的网站并为其建立索引。
  If you have already built a JavaScript-powered website, or if you really want to for whatever reason, then our drawing recommendation is to configure that application to render everything on the server side and deliver the complete HTML and content to the browser and to Google in the same way that one of these older traditional content management systems does. If you can do that properly, then it will make it a lot easier and faster for Google to index your JavaScript-powered website.
  如果您已经建立了JavaScript网站,或者出于特殊原因确实想要这样做,那么我们的建议是配置该应用程序在服务器端渲染所有内容,并将完整的HTML和内容提供给浏览器和Google 就像这些较旧的传统内容管理系统之一一样。这对于谷歌快速抓取收录你的JavaScript网站会有很大帮助。
  Perhaps, you've already launched a JavaScript-powered website that is rendering everything on the client side. You're not sure how to configure it to do that on the server side. There are third party services like Prerender.io, which might help. They might be worth looking at as well.
  又或许,您已经发布了一个在客户端渲染的基于JavaScript开发的网站,不知道如何改为在服务器端渲染。有一些第三方服务获取可以帮你解决这个问题,比如Prerender.io。可以了解一下。
  So in a nutshell, a lot of SEO is about making it easy for Google and not putting hurdles in Google's way. And when it comes to using JavaScript on your website, there are quite a fewpitfalls and traps that if you're not aware of them, it's easy to fall into.
  简而言之,很多SEO都是为了帮助Google而不是阻碍Google抓取网站。在您的网站上使用JavaScript时,会有很多陷阱,稍不小心就掉入。
  So if you have any questions, we would love to help. So hit us up here on WeChat. We could have you to discuss your specific case and we look forward to talking to you. Thanks.
  如果您有任何疑问,欢迎联系我们微信小编。期待与您交流,谢谢大家。
  

js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?

网站优化优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2022-05-15 07:26 • 来自相关话题

  js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?
  Web 世界有一个至理名言,就是 Java 提出的“Write once, run everywhere”。但这句话只适用于 Java 么?我们能否也用它来形容 JavaScript 呢?答案是 Yes。
  我将会在这篇文章中介绍同构 JavaScript 应用的概念,并推荐一些资源帮助你构建此类应用。
  一路走来
  多年以前,web 只是一些由 HTML 和 CSS 搭建的静态页面,没有太多的交互。用户的每一个动作都需要服务器来创建并返回一个完整的页面。幸而有了 JavaScript,开发者开始创建很棒的效果,不过 Ajax 的到来才是这场革新的真正开始。Web 开发者开始编写能够与服务端进行交互,且在不重载页面的情况下向服务端发送并接受数据的页面。
  随着时间的推移,客户端代码可以做的事情越来越多,催生了被称作单页面应用(SPA)的一类应用。SPA 在首次加载页面时就获取了所有必需的资源,或者再按需动态加载并且渲染到页面上。 Gmail 和 StackEdit editor 是很棒的 SPA 示例。
  SPA 准许重度的交互设计,因为几乎所有的操作都在客户端执行,保持最低限度地与服务端进行交流。不幸的是,它们也存在一些严重的问题,我们选择几个进行讨论。
  性能
  因为相对于静态页面,SPA 需要更多的客户端代码,需要下载数据的体积也更大。这使得手机加载速度很慢,可能会导致一些极端的状况 —— 比如糟糕的用户体验以及收入上的损失等。依据 Microsoft 的一篇文章 ——
  Bing 的一项研究表明:页面的加载时间每增加 10ms,站点年度总收入就会减少 $250K。
  SEO
  因为单页面应用依赖于 JavaScript 的执行,服务器不会提供它们可能用到的任何 HTML 内容。因此,web 爬虫很难去索引到这些页面。爬虫就是可以向 web 服务器发送请求,并且将结果分析成原始文本的程序,而不需要像一个浏览器运行 JavaScript 那样解释和执行客户端的内容。不久前,Google 优化了搜索引擎的 web 爬虫,现在它也可以抓取基于客户端 JavaScript 所构建的页面了。但是 Bing、Yahoo 以及其他搜索引擎怎么办?一个好的索引对任何公司来说都至关重要,它通常会带来更多的流量以及更高的回报。
  同构 JavaScript 应用
  同构 JavaScript 应用基于 JavaScript 编写,可以在客户端和服务端运行。正因为此,你只需要写一次代码,就可以在服务端渲染静态页面,还可以在客户端完成复杂的交互。所以,这种方式互通了两个世界,并且避免了前面提到了两个问题。
  现在,有很多框架可以帮助你开发这类应用。其中最著名的一个可能是 Meteor。Meter 是一个开源 JavaScript 框架,基于 Node.js 编写,专注于实时 web 应用。我想提到的另一个项目是 Rendr,它是 Airbnb 开发的一款轻量级类库,准许同时在客户端和服务端运行 Backbone.js。
  越来越多的公司将 Node.js 应用到他们的产品中。客户端和服务端的代码共享成为一个更加普通而自然的选择。在我看来,这种做法将是 web 开发的未来。有些类库通过共享模板又增强了这一趋势,比如 React。
  结论
  这篇文章介绍了同构 JavaScript 应用的概念,它是应用开发的一种全新方式,可以最大限度地结合服务端和客户端应用程序。我们还讨论了运用这种方式尝试解决的问题,以及你现在就可以参与实践的一些项目。
  你听说过同构 JavaScript 应用么?你开发过么?你有开发经验么?
  原文:Isomorphic JavaScript Applications — the Future of the Web? 查看全部

  js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?
  Web 世界有一个至理名言,就是 Java 提出的“Write once, run everywhere”。但这句话只适用于 Java 么?我们能否也用它来形容 JavaScript 呢?答案是 Yes。
  我将会在这篇文章中介绍同构 JavaScript 应用的概念,并推荐一些资源帮助你构建此类应用。
  一路走来
  多年以前,web 只是一些由 HTML 和 CSS 搭建的静态页面,没有太多的交互。用户的每一个动作都需要服务器来创建并返回一个完整的页面。幸而有了 JavaScript,开发者开始创建很棒的效果,不过 Ajax 的到来才是这场革新的真正开始。Web 开发者开始编写能够与服务端进行交互,且在不重载页面的情况下向服务端发送并接受数据的页面。
  随着时间的推移,客户端代码可以做的事情越来越多,催生了被称作单页面应用(SPA)的一类应用。SPA 在首次加载页面时就获取了所有必需的资源,或者再按需动态加载并且渲染到页面上。 Gmail 和 StackEdit editor 是很棒的 SPA 示例。
  SPA 准许重度的交互设计,因为几乎所有的操作都在客户端执行,保持最低限度地与服务端进行交流。不幸的是,它们也存在一些严重的问题,我们选择几个进行讨论。
  性能
  因为相对于静态页面,SPA 需要更多的客户端代码,需要下载数据的体积也更大。这使得手机加载速度很慢,可能会导致一些极端的状况 —— 比如糟糕的用户体验以及收入上的损失等。依据 Microsoft 的一篇文章 ——
  Bing 的一项研究表明:页面的加载时间每增加 10ms,站点年度总收入就会减少 $250K。
  SEO
  因为单页面应用依赖于 JavaScript 的执行,服务器不会提供它们可能用到的任何 HTML 内容。因此,web 爬虫很难去索引到这些页面。爬虫就是可以向 web 服务器发送请求,并且将结果分析成原始文本的程序,而不需要像一个浏览器运行 JavaScript 那样解释和执行客户端的内容。不久前,Google 优化了搜索引擎的 web 爬虫,现在它也可以抓取基于客户端 JavaScript 所构建的页面了。但是 Bing、Yahoo 以及其他搜索引擎怎么办?一个好的索引对任何公司来说都至关重要,它通常会带来更多的流量以及更高的回报。
  同构 JavaScript 应用
  同构 JavaScript 应用基于 JavaScript 编写,可以在客户端和服务端运行。正因为此,你只需要写一次代码,就可以在服务端渲染静态页面,还可以在客户端完成复杂的交互。所以,这种方式互通了两个世界,并且避免了前面提到了两个问题。
  现在,有很多框架可以帮助你开发这类应用。其中最著名的一个可能是 Meteor。Meter 是一个开源 JavaScript 框架,基于 Node.js 编写,专注于实时 web 应用。我想提到的另一个项目是 Rendr,它是 Airbnb 开发的一款轻量级类库,准许同时在客户端和服务端运行 Backbone.js。
  越来越多的公司将 Node.js 应用到他们的产品中。客户端和服务端的代码共享成为一个更加普通而自然的选择。在我看来,这种做法将是 web 开发的未来。有些类库通过共享模板又增强了这一趋势,比如 React。
  结论
  这篇文章介绍了同构 JavaScript 应用的概念,它是应用开发的一种全新方式,可以最大限度地结合服务端和客户端应用程序。我们还讨论了运用这种方式尝试解决的问题,以及你现在就可以参与实践的一些项目。
  你听说过同构 JavaScript 应用么?你开发过么?你有开发经验么?
  原文:Isomorphic JavaScript Applications — the Future of the Web?

js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?

网站优化优采云 发表了文章 • 0 个评论 • 70 次浏览 • 2022-05-13 20:19 • 来自相关话题

  js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?
  Web 世界有一个至理名言,就是 Java 提出的“Write once, run everywhere”。但这句话只适用于 Java 么?我们能否也用它来形容 JavaScript 呢?答案是 Yes。
  我将会在这篇文章中介绍同构 JavaScript 应用的概念,并推荐一些资源帮助你构建此类应用。
  一路走来
  多年以前,web 只是一些由 HTML 和 CSS 搭建的静态页面,没有太多的交互。用户的每一个动作都需要服务器来创建并返回一个完整的页面。幸而有了 JavaScript,开发者开始创建很棒的效果,不过 Ajax 的到来才是这场革新的真正开始。Web 开发者开始编写能够与服务端进行交互,且在不重载页面的情况下向服务端发送并接受数据的页面。
  随着时间的推移,客户端代码可以做的事情越来越多,催生了被称作单页面应用(SPA)的一类应用。SPA 在首次加载页面时就获取了所有必需的资源,或者再按需动态加载并且渲染到页面上。 Gmail 和 StackEdit editor 是很棒的 SPA 示例。
  SPA 准许重度的交互设计,因为几乎所有的操作都在客户端执行,保持最低限度地与服务端进行交流。不幸的是,它们也存在一些严重的问题,我们选择几个进行讨论。
  性能
  因为相对于静态页面,SPA 需要更多的客户端代码,需要下载数据的体积也更大。这使得手机加载速度很慢,可能会导致一些极端的状况 —— 比如糟糕的用户体验以及收入上的损失等。依据 Microsoft 的一篇文章 ——
  Bing 的一项研究表明:页面的加载时间每增加 10ms,站点年度总收入就会减少 $250K。
  SEO
  因为单页面应用依赖于 JavaScript 的执行,服务器不会提供它们可能用到的任何 HTML 内容。因此,web 爬虫很难去索引到这些页面。爬虫就是可以向 web 服务器发送请求,并且将结果分析成原始文本的程序,而不需要像一个浏览器运行 JavaScript 那样解释和执行客户端的内容。不久前,Google 优化了搜索引擎的 web 爬虫,现在它也可以抓取基于客户端 JavaScript 所构建的页面了。但是 Bing、Yahoo 以及其他搜索引擎怎么办?一个好的索引对任何公司来说都至关重要,它通常会带来更多的流量以及更高的回报。
  同构 JavaScript 应用
  同构 JavaScript 应用基于 JavaScript 编写,可以在客户端和服务端运行。正因为此,你只需要写一次代码,就可以在服务端渲染静态页面,还可以在客户端完成复杂的交互。所以,这种方式互通了两个世界,并且避免了前面提到了两个问题。
  现在,有很多框架可以帮助你开发这类应用。其中最著名的一个可能是 Meteor。Meter 是一个开源 JavaScript 框架,基于 Node.js 编写,专注于实时 web 应用。我想提到的另一个项目是 Rendr,它是 Airbnb 开发的一款轻量级类库,准许同时在客户端和服务端运行 Backbone.js。
  越来越多的公司将 Node.js 应用到他们的产品中。客户端和服务端的代码共享成为一个更加普通而自然的选择。在我看来,这种做法将是 web 开发的未来。有些类库通过共享模板又增强了这一趋势,比如 React。
  结论
  这篇文章介绍了同构 JavaScript 应用的概念,它是应用开发的一种全新方式,可以最大限度地结合服务端和客户端应用程序。我们还讨论了运用这种方式尝试解决的问题,以及你现在就可以参与实践的一些项目。
  你听说过同构 JavaScript 应用么?你开发过么?你有开发经验么?
  原文:Isomorphic JavaScript Applications — the Future of the Web? 查看全部

  js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?
  Web 世界有一个至理名言,就是 Java 提出的“Write once, run everywhere”。但这句话只适用于 Java 么?我们能否也用它来形容 JavaScript 呢?答案是 Yes。
  我将会在这篇文章中介绍同构 JavaScript 应用的概念,并推荐一些资源帮助你构建此类应用。
  一路走来
  多年以前,web 只是一些由 HTML 和 CSS 搭建的静态页面,没有太多的交互。用户的每一个动作都需要服务器来创建并返回一个完整的页面。幸而有了 JavaScript,开发者开始创建很棒的效果,不过 Ajax 的到来才是这场革新的真正开始。Web 开发者开始编写能够与服务端进行交互,且在不重载页面的情况下向服务端发送并接受数据的页面。
  随着时间的推移,客户端代码可以做的事情越来越多,催生了被称作单页面应用(SPA)的一类应用。SPA 在首次加载页面时就获取了所有必需的资源,或者再按需动态加载并且渲染到页面上。 Gmail 和 StackEdit editor 是很棒的 SPA 示例。
  SPA 准许重度的交互设计,因为几乎所有的操作都在客户端执行,保持最低限度地与服务端进行交流。不幸的是,它们也存在一些严重的问题,我们选择几个进行讨论。
  性能
  因为相对于静态页面,SPA 需要更多的客户端代码,需要下载数据的体积也更大。这使得手机加载速度很慢,可能会导致一些极端的状况 —— 比如糟糕的用户体验以及收入上的损失等。依据 Microsoft 的一篇文章 ——
  Bing 的一项研究表明:页面的加载时间每增加 10ms,站点年度总收入就会减少 $250K。
  SEO
  因为单页面应用依赖于 JavaScript 的执行,服务器不会提供它们可能用到的任何 HTML 内容。因此,web 爬虫很难去索引到这些页面。爬虫就是可以向 web 服务器发送请求,并且将结果分析成原始文本的程序,而不需要像一个浏览器运行 JavaScript 那样解释和执行客户端的内容。不久前,Google 优化了搜索引擎的 web 爬虫,现在它也可以抓取基于客户端 JavaScript 所构建的页面了。但是 Bing、Yahoo 以及其他搜索引擎怎么办?一个好的索引对任何公司来说都至关重要,它通常会带来更多的流量以及更高的回报。
  同构 JavaScript 应用
  同构 JavaScript 应用基于 JavaScript 编写,可以在客户端和服务端运行。正因为此,你只需要写一次代码,就可以在服务端渲染静态页面,还可以在客户端完成复杂的交互。所以,这种方式互通了两个世界,并且避免了前面提到了两个问题。
  现在,有很多框架可以帮助你开发这类应用。其中最著名的一个可能是 Meteor。Meter 是一个开源 JavaScript 框架,基于 Node.js 编写,专注于实时 web 应用。我想提到的另一个项目是 Rendr,它是 Airbnb 开发的一款轻量级类库,准许同时在客户端和服务端运行 Backbone.js。
  越来越多的公司将 Node.js 应用到他们的产品中。客户端和服务端的代码共享成为一个更加普通而自然的选择。在我看来,这种做法将是 web 开发的未来。有些类库通过共享模板又增强了这一趋势,比如 React。
  结论
  这篇文章介绍了同构 JavaScript 应用的概念,它是应用开发的一种全新方式,可以最大限度地结合服务端和客户端应用程序。我们还讨论了运用这种方式尝试解决的问题,以及你现在就可以参与实践的一些项目。
  你听说过同构 JavaScript 应用么?你开发过么?你有开发经验么?
  原文:Isomorphic JavaScript Applications — the Future of the Web?

一日一技:爬虫如何正确从网页中提取伪元素?

网站优化优采云 发表了文章 • 0 个评论 • 82 次浏览 • 2022-05-05 20:16 • 来自相关话题

  一日一技:爬虫如何正确从网页中提取伪元素?
  
  摄影:产品经理家里做点简单菜
  我们来看一个网页,大家想想使用 XPath 怎么抓取。
  
  可以看到,在源代码里面没有请抓取我!这段文字。难道这个网页是异步加载?我们现在来看一下网页的请求:
  
  网页也没有发起任何的Ajax 请求。那么,这段文字是从哪里来的?
  我们来看一下这个网页对应的 HTML:
  
  整个 HTML 里面,甚至连 JavaScript 都没有。那么这段文字是哪里来的呢?
  有点经验的同学,可能会想到看一下这个example.css文件,其内容如下:
  
  没错,文字确实在这里面。其中::after,我们称之为伪元素(Pseudo-element)[1]。
  对于伪元素里面的文字,应该如何提取呢?当然,你可以使用正则表达式来提取。不过我们今天不准备讲这个。
  XPath 没有办法提取伪元素,因为 XPath 只能提取 Dom 树中的内容,但是伪元素是不属于 Dom 树的,因此无法提取。要提取伪元素,需要使用 CSS 选择器。
  由于网页的 HTML 与 CSS 是分开的。如果我们使用 requests 或者 Scrapy,只能单独拿到 HTML 和 CSS。单独拿到 HTML 没有任何作用,因为数据根本不在里面。单独拿到 CSS,虽然有数据,但如果不用正则表达式的话,里面的数据拿不出来。所以 BeautifulSoup4的 CSS 选择器也没有什么作用。所以我们需要把 CSS 和 HTML 放到一起来渲染,然后再使用JavaScript 的 CSS 选择器找到需要提取的内容。
  首先我们来看一下,为了提取这个伪元素的值,我们需要下面这段Js 代码:
  window.getComputedStyle(document.querySelector('.fake_element'),':after').getPropertyValue('content')<br />
  其中,ducument.querySelector的第一个参数.fake_element就表示值为fake_element的 class 属性。第二个参数就是伪元素:after。运行效果如下图所示:
  
  为了能够运行这段 JavaScript,我们需要使用模拟浏览器,无论是 Selenium 还是 Puppeteer 都可以。这里以 Selenium 为例。
  在 Selenium 要执行 Js,需要使用driver.execute_script()方法,代码如下:
  
  提取出来的内容最外层会包上一对双引号,拿到以后移除外侧的双引号,就是我们在网页上看到的内容了。
  参考资料[1]
  伪元素(Pseudo-element):
   查看全部

  一日一技:爬虫如何正确从网页中提取伪元素?
  
  摄影:产品经理家里做点简单菜
  我们来看一个网页,大家想想使用 XPath 怎么抓取。
  
  可以看到,在源代码里面没有请抓取我!这段文字。难道这个网页是异步加载?我们现在来看一下网页的请求:
  
  网页也没有发起任何的Ajax 请求。那么,这段文字是从哪里来的?
  我们来看一下这个网页对应的 HTML:
  
  整个 HTML 里面,甚至连 JavaScript 都没有。那么这段文字是哪里来的呢?
  有点经验的同学,可能会想到看一下这个example.css文件,其内容如下:
  
  没错,文字确实在这里面。其中::after,我们称之为伪元素(Pseudo-element)[1]。
  对于伪元素里面的文字,应该如何提取呢?当然,你可以使用正则表达式来提取。不过我们今天不准备讲这个。
  XPath 没有办法提取伪元素,因为 XPath 只能提取 Dom 树中的内容,但是伪元素是不属于 Dom 树的,因此无法提取。要提取伪元素,需要使用 CSS 选择器。
  由于网页的 HTML 与 CSS 是分开的。如果我们使用 requests 或者 Scrapy,只能单独拿到 HTML 和 CSS。单独拿到 HTML 没有任何作用,因为数据根本不在里面。单独拿到 CSS,虽然有数据,但如果不用正则表达式的话,里面的数据拿不出来。所以 BeautifulSoup4的 CSS 选择器也没有什么作用。所以我们需要把 CSS 和 HTML 放到一起来渲染,然后再使用JavaScript 的 CSS 选择器找到需要提取的内容。
  首先我们来看一下,为了提取这个伪元素的值,我们需要下面这段Js 代码:
  window.getComputedStyle(document.querySelector('.fake_element'),':after').getPropertyValue('content')<br />
  其中,ducument.querySelector的第一个参数.fake_element就表示值为fake_element的 class 属性。第二个参数就是伪元素:after。运行效果如下图所示:
  
  为了能够运行这段 JavaScript,我们需要使用模拟浏览器,无论是 Selenium 还是 Puppeteer 都可以。这里以 Selenium 为例。
  在 Selenium 要执行 Js,需要使用driver.execute_script()方法,代码如下:
  
  提取出来的内容最外层会包上一对双引号,拿到以后移除外侧的双引号,就是我们在网页上看到的内容了。
  参考资料[1]
  伪元素(Pseudo-element):
  

js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?

网站优化优采云 发表了文章 • 0 个评论 • 56 次浏览 • 2022-05-05 20:06 • 来自相关话题

  js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?
  Web 世界有一个至理名言,就是 Java 提出的“Write once, run everywhere”。但这句话只适用于 Java 么?我们能否也用它来形容 JavaScript 呢?答案是 Yes。
  我将会在这篇文章中介绍同构 JavaScript 应用的概念,并推荐一些资源帮助你构建此类应用。
  一路走来
  多年以前,web 只是一些由 HTML 和 CSS 搭建的静态页面,没有太多的交互。用户的每一个动作都需要服务器来创建并返回一个完整的页面。幸而有了 JavaScript,开发者开始创建很棒的效果,不过 Ajax 的到来才是这场革新的真正开始。Web 开发者开始编写能够与服务端进行交互,且在不重载页面的情况下向服务端发送并接受数据的页面。
  随着时间的推移,客户端代码可以做的事情越来越多,催生了被称作单页面应用(SPA)的一类应用。SPA 在首次加载页面时就获取了所有必需的资源,或者再按需动态加载并且渲染到页面上。 Gmail 和 StackEdit editor 是很棒的 SPA 示例。
  SPA 准许重度的交互设计,因为几乎所有的操作都在客户端执行,保持最低限度地与服务端进行交流。不幸的是,它们也存在一些严重的问题,我们选择几个进行讨论。
  性能
  因为相对于静态页面,SPA 需要更多的客户端代码,需要下载数据的体积也更大。这使得手机加载速度很慢,可能会导致一些极端的状况 —— 比如糟糕的用户体验以及收入上的损失等。依据 Microsoft 的一篇文章 ——
  Bing 的一项研究表明:页面的加载时间每增加 10ms,站点年度总收入就会减少 $250K。
  SEO
  因为单页面应用依赖于 JavaScript 的执行,服务器不会提供它们可能用到的任何 HTML 内容。因此,web 爬虫很难去索引到这些页面。爬虫就是可以向 web 服务器发送请求,并且将结果分析成原始文本的程序,而不需要像一个浏览器运行 JavaScript 那样解释和执行客户端的内容。不久前,Google 优化了搜索引擎的 web 爬虫,现在它也可以抓取基于客户端 JavaScript 所构建的页面了。但是 Bing、Yahoo 以及其他搜索引擎怎么办?一个好的索引对任何公司来说都至关重要,它通常会带来更多的流量以及更高的回报。
  同构 JavaScript 应用
  同构 JavaScript 应用基于 JavaScript 编写,可以在客户端和服务端运行。正因为此,你只需要写一次代码,就可以在服务端渲染静态页面,还可以在客户端完成复杂的交互。所以,这种方式互通了两个世界,并且避免了前面提到了两个问题。
  现在,有很多框架可以帮助你开发这类应用。其中最著名的一个可能是 Meteor。Meter 是一个开源 JavaScript 框架,基于 Node.js 编写,专注于实时 web 应用。我想提到的另一个项目是 Rendr,它是 Airbnb 开发的一款轻量级类库,准许同时在客户端和服务端运行 Backbone.js。
  越来越多的公司将 Node.js 应用到他们的产品中。客户端和服务端的代码共享成为一个更加普通而自然的选择。在我看来,这种做法将是 web 开发的未来。有些类库通过共享模板又增强了这一趋势,比如 React。
  结论
  这篇文章介绍了同构 JavaScript 应用的概念,它是应用开发的一种全新方式,可以最大限度地结合服务端和客户端应用程序。我们还讨论了运用这种方式尝试解决的问题,以及你现在就可以参与实践的一些项目。
  你听说过同构 JavaScript 应用么?你开发过么?你有开发经验么?
  原文:Isomorphic JavaScript Applications — the Future of the Web? 查看全部

  js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?
  Web 世界有一个至理名言,就是 Java 提出的“Write once, run everywhere”。但这句话只适用于 Java 么?我们能否也用它来形容 JavaScript 呢?答案是 Yes。
  我将会在这篇文章中介绍同构 JavaScript 应用的概念,并推荐一些资源帮助你构建此类应用。
  一路走来
  多年以前,web 只是一些由 HTML 和 CSS 搭建的静态页面,没有太多的交互。用户的每一个动作都需要服务器来创建并返回一个完整的页面。幸而有了 JavaScript,开发者开始创建很棒的效果,不过 Ajax 的到来才是这场革新的真正开始。Web 开发者开始编写能够与服务端进行交互,且在不重载页面的情况下向服务端发送并接受数据的页面。
  随着时间的推移,客户端代码可以做的事情越来越多,催生了被称作单页面应用(SPA)的一类应用。SPA 在首次加载页面时就获取了所有必需的资源,或者再按需动态加载并且渲染到页面上。 Gmail 和 StackEdit editor 是很棒的 SPA 示例。
  SPA 准许重度的交互设计,因为几乎所有的操作都在客户端执行,保持最低限度地与服务端进行交流。不幸的是,它们也存在一些严重的问题,我们选择几个进行讨论。
  性能
  因为相对于静态页面,SPA 需要更多的客户端代码,需要下载数据的体积也更大。这使得手机加载速度很慢,可能会导致一些极端的状况 —— 比如糟糕的用户体验以及收入上的损失等。依据 Microsoft 的一篇文章 ——
  Bing 的一项研究表明:页面的加载时间每增加 10ms,站点年度总收入就会减少 $250K。
  SEO
  因为单页面应用依赖于 JavaScript 的执行,服务器不会提供它们可能用到的任何 HTML 内容。因此,web 爬虫很难去索引到这些页面。爬虫就是可以向 web 服务器发送请求,并且将结果分析成原始文本的程序,而不需要像一个浏览器运行 JavaScript 那样解释和执行客户端的内容。不久前,Google 优化了搜索引擎的 web 爬虫,现在它也可以抓取基于客户端 JavaScript 所构建的页面了。但是 Bing、Yahoo 以及其他搜索引擎怎么办?一个好的索引对任何公司来说都至关重要,它通常会带来更多的流量以及更高的回报。
  同构 JavaScript 应用
  同构 JavaScript 应用基于 JavaScript 编写,可以在客户端和服务端运行。正因为此,你只需要写一次代码,就可以在服务端渲染静态页面,还可以在客户端完成复杂的交互。所以,这种方式互通了两个世界,并且避免了前面提到了两个问题。
  现在,有很多框架可以帮助你开发这类应用。其中最著名的一个可能是 Meteor。Meter 是一个开源 JavaScript 框架,基于 Node.js 编写,专注于实时 web 应用。我想提到的另一个项目是 Rendr,它是 Airbnb 开发的一款轻量级类库,准许同时在客户端和服务端运行 Backbone.js。
  越来越多的公司将 Node.js 应用到他们的产品中。客户端和服务端的代码共享成为一个更加普通而自然的选择。在我看来,这种做法将是 web 开发的未来。有些类库通过共享模板又增强了这一趋势,比如 React。
  结论
  这篇文章介绍了同构 JavaScript 应用的概念,它是应用开发的一种全新方式,可以最大限度地结合服务端和客户端应用程序。我们还讨论了运用这种方式尝试解决的问题,以及你现在就可以参与实践的一些项目。
  你听说过同构 JavaScript 应用么?你开发过么?你有开发经验么?
  原文:Isomorphic JavaScript Applications — the Future of the Web?

从零开始掌握微服务软件测试-端到端测试的优化策略

网站优化优采云 发表了文章 • 0 个评论 • 67 次浏览 • 2022-05-02 18:18 • 来自相关话题

  从零开始掌握微服务软件测试-端到端测试的优化策略
  上篇文章中的契约测试解决了我们对微服务之间协作、交互的验证需求。本系列到目前为止介绍的测试都是后端或者 API 级别的测试,可以说都属于“白盒测试”。自动化测试的最后一步,就是所谓的端到端测试(End-to-End Test),又称黑盒测试,即从用户角度验证整个系统的功能,看其从启动到结束是否全部符合用户预期。
  黑盒测试:又被称为功能测试、数据驱动测试或基于规格说明的测试,是通过使用整个软件或某种软件功能来严格地测试, 而并没有通过检查程序的源代码或者很清楚地了解该软件的源代码程序具体是怎样设计的。测试人员通过输入他们的数据然后看输出的结果从而了解软件怎样工作。简单来说,它的测试视角是从最终用户出发,对系统的底层实现一无所知。
  本文首先将讲解端到端测试的主要方法,包括配置步骤和测试用例的编写等。但是正如很多读者经常遇到的,UI 测试常常是非常脆弱、不稳定的,往往会因为一点点 UI 的变化而失败。为了确保端到端测试起到既能弥补其他测试的不足,又不会经常导致误报的作用,本文还将着重分析一些优化端到端策略的方法。
  端到端测试的实施方法
  UI 测试的框架和工具目前有很多。本文将着重以网页端的端到端测试为例。按照 GitHub 上的 Star(点赞)数目排名,目前最靠前的五个端到端测试框架为:
  本文将选用 AngularJS 团队所发布的 E2E 测试框架 Protractor,过程如下图所示:
  
  实施步骤主要分为以下几步:
  编写配置文件和基于 Jasmine/Mocha/Cucumber 的测试用例;
  使用 Protractor 作为执行框架;
  调用 Selenium Server/chrome Driver,启动浏览器进程;
  从浏览器执行测试用例,检查 AngularJS 应用程序的结果是否符合预期。
  下面将逐步加以介绍。
  Protractor 简介
  Protractor 是 AngularJS 团队发布的一款开源的端到端网页测试工具,可以说是专门为 Angular 定制,内置了各种可以选择、操作 Angular 元素的便捷方法。如果基于 Angular 开发,使用它可以减少很多重复代码。
  Protractor 的主要特点有:
  Jamine 是一个由行为驱动的 JavaScript 代码测试框架,不依赖于任何其他 JavaScript 框架,也不需要使用 DOM。它的语法非常简单、清晰,非常便于撰写测试用例。一个典型的 Jammine 测试用例如下:
  
  其主要功能有:
  环境安装主要有以下几步:
  npminstallprotractor -g
  webdriver-managerupdate// 浏览器驱动
  webdriver-managerstart
  默认情况下,Selenium 测试服务器接入地址为::4444/wd/hub。
  npminstall protractor-jasmine2-html-reporter -g
  npminstall jasmine-reporters -g
  由于需要在 config 文件中加载。一般把这两个插件放在根目录的 node_modules 目录下
  配置文件
  配置文件位于根目录下,默认命名为 protractor.config.js,举例如下:
  
  编写测试用例
  测试用例的作用主要是:
  查找页面元素
  首先,介绍针对浏览器的常用操作:
  
  其次是定位页面元素,Pratractor 支持用 by.binding 定位元素,又称为定位器 locator。Protractor 中常用的定位器有如下几种:
  “class” 是 DOM 元素上的一个属性。在实践中,通常是多个 DOM 元素有同样的 class 名,所以通常用它来查找多个元素。
  HTML 代码如下:
  
  测试用例如下:
  
  根据元素标签名查找。
  HTML 代码如下:
  
  测试用例如下:
  
  查找 name 属性匹配的表单元素。
  HTML 代码如下:
  
  测试用例如下:
  
  查找链接文字匹配的链接元素。
  HTML 代码如下:
  
  测试用例如下:
  
  查找链接文字部分匹配的链接元素。
  HTML 代码如下:
  
  测试用例如下:
  
  正如名字所表明的,它通过 CSS 来定位元素。默认使用浏览器本地支持的选择器,可参考 W3C 的 CSS 选择器。如果浏览器默认不支持 CSS 查询,则使用 Sizzle。IE6、7 和 Firefox 3.0 都使用了 Sizzle。注意使用 CSS 选择器不能保证在所有浏览器里都表现一样,有些在某些浏览器里工作良好,在另一些浏览器里可能无法工作。
  HTML 代码如下:
  
  测试代码如下:
  更多定位器请见参考资料。
  这是最高效也是首选的方法用于查找一个元素。UI 开发人员常犯的错误是,要么没有指定 id,要么自动生成随机 id,这两种情况都应避免。即使是使用 class 也比使用自动生成随机 id 要好的多。
  操作定位到的页面元素
  Protractor 中使用 element(locator) 和 element.all(locator) 来定位元素,前者是定位单个元素,后者是定位所有符合条件的元素。第一个方法如果找到则返回该元素,如果没找到则抛出异常。第二种如果找到则返回一个包含所有元素的列表,如果没找到则返回一个空数组。
  定位到元素后能做哪些操作?常用操作举例如下:
  
  关于 sendkeys 的使用,注意还可以支持下列键盘操作:
  操作效果
  sendKeys(protractor.Key.CONTROL, 'a')
  全选
  sendKeys(protractor.Key.CONTROL, 'c')
  复制
  sendKeys(protractor.Key.CONTROL, 'v')
  粘贴
  sendKeys(protractor.Key.CONTROL, 'x')
  剪切
  下面,我们就可以编写一个实际的测试用例了。下面假设有一个本地的 Web 服务器,打开浏览器之后登录,然后验证一些特定信息是否符合预期,保存为 tc/e2e/scan.js。
  
  执行 Protractor
  
  调试技巧
  
  
  优化策略
  虽然端到端测试可以彻底检查整个系统是否符合用户预期,但是很多人都会感觉到,这样的测试很容易失败,因为即使前端有一些微小的改动或者调整,都会导致很多测试用例的失效。因此,总结下面这几点优化策略:
  下面是一个 Page Object 的例子:
  
  然后在主测试用例文件中,用下面的方式调用:
  
  
  那么,如果只运行跟主页有关的测试,只需要执行:
  
  总结
  本文介绍了端到端测试的主要方法和优化策略,让您可以快速地开始对前端程序进行自动化黑盒测试。
  主要方法有:
  优化策略有:
  到目前为止,我们已经覆盖了“自动化测试金字塔”的大部分内容。下一篇,我们将会介绍目前测试领域的两个新热点:云端测试和性能测试。 查看全部

  从零开始掌握微服务软件测试-端到端测试的优化策略
  上篇文章中的契约测试解决了我们对微服务之间协作、交互的验证需求。本系列到目前为止介绍的测试都是后端或者 API 级别的测试,可以说都属于“白盒测试”。自动化测试的最后一步,就是所谓的端到端测试(End-to-End Test),又称黑盒测试,即从用户角度验证整个系统的功能,看其从启动到结束是否全部符合用户预期。
  黑盒测试:又被称为功能测试、数据驱动测试或基于规格说明的测试,是通过使用整个软件或某种软件功能来严格地测试, 而并没有通过检查程序的源代码或者很清楚地了解该软件的源代码程序具体是怎样设计的。测试人员通过输入他们的数据然后看输出的结果从而了解软件怎样工作。简单来说,它的测试视角是从最终用户出发,对系统的底层实现一无所知。
  本文首先将讲解端到端测试的主要方法,包括配置步骤和测试用例的编写等。但是正如很多读者经常遇到的,UI 测试常常是非常脆弱、不稳定的,往往会因为一点点 UI 的变化而失败。为了确保端到端测试起到既能弥补其他测试的不足,又不会经常导致误报的作用,本文还将着重分析一些优化端到端策略的方法。
  端到端测试的实施方法
  UI 测试的框架和工具目前有很多。本文将着重以网页端的端到端测试为例。按照 GitHub 上的 Star(点赞)数目排名,目前最靠前的五个端到端测试框架为:
  本文将选用 AngularJS 团队所发布的 E2E 测试框架 Protractor,过程如下图所示:
  
  实施步骤主要分为以下几步:
  编写配置文件和基于 Jasmine/Mocha/Cucumber 的测试用例;
  使用 Protractor 作为执行框架;
  调用 Selenium Server/chrome Driver,启动浏览器进程;
  从浏览器执行测试用例,检查 AngularJS 应用程序的结果是否符合预期。
  下面将逐步加以介绍。
  Protractor 简介
  Protractor 是 AngularJS 团队发布的一款开源的端到端网页测试工具,可以说是专门为 Angular 定制,内置了各种可以选择、操作 Angular 元素的便捷方法。如果基于 Angular 开发,使用它可以减少很多重复代码。
  Protractor 的主要特点有:
  Jamine 是一个由行为驱动的 JavaScript 代码测试框架,不依赖于任何其他 JavaScript 框架,也不需要使用 DOM。它的语法非常简单、清晰,非常便于撰写测试用例。一个典型的 Jammine 测试用例如下:
  
  其主要功能有:
  环境安装主要有以下几步:
  npminstallprotractor -g
  webdriver-managerupdate// 浏览器驱动
  webdriver-managerstart
  默认情况下,Selenium 测试服务器接入地址为::4444/wd/hub。
  npminstall protractor-jasmine2-html-reporter -g
  npminstall jasmine-reporters -g
  由于需要在 config 文件中加载。一般把这两个插件放在根目录的 node_modules 目录下
  配置文件
  配置文件位于根目录下,默认命名为 protractor.config.js,举例如下:
  
  编写测试用例
  测试用例的作用主要是:
  查找页面元素
  首先,介绍针对浏览器的常用操作:
  
  其次是定位页面元素,Pratractor 支持用 by.binding 定位元素,又称为定位器 locator。Protractor 中常用的定位器有如下几种:
  “class” 是 DOM 元素上的一个属性。在实践中,通常是多个 DOM 元素有同样的 class 名,所以通常用它来查找多个元素。
  HTML 代码如下:
  
  测试用例如下:
  
  根据元素标签名查找。
  HTML 代码如下:
  
  测试用例如下:
  
  查找 name 属性匹配的表单元素。
  HTML 代码如下:
  
  测试用例如下:
  
  查找链接文字匹配的链接元素。
  HTML 代码如下:
  
  测试用例如下:
  
  查找链接文字部分匹配的链接元素。
  HTML 代码如下:
  
  测试用例如下:
  
  正如名字所表明的,它通过 CSS 来定位元素。默认使用浏览器本地支持的选择器,可参考 W3C 的 CSS 选择器。如果浏览器默认不支持 CSS 查询,则使用 Sizzle。IE6、7 和 Firefox 3.0 都使用了 Sizzle。注意使用 CSS 选择器不能保证在所有浏览器里都表现一样,有些在某些浏览器里工作良好,在另一些浏览器里可能无法工作。
  HTML 代码如下:
  
  测试代码如下:
  更多定位器请见参考资料。
  这是最高效也是首选的方法用于查找一个元素。UI 开发人员常犯的错误是,要么没有指定 id,要么自动生成随机 id,这两种情况都应避免。即使是使用 class 也比使用自动生成随机 id 要好的多。
  操作定位到的页面元素
  Protractor 中使用 element(locator) 和 element.all(locator) 来定位元素,前者是定位单个元素,后者是定位所有符合条件的元素。第一个方法如果找到则返回该元素,如果没找到则抛出异常。第二种如果找到则返回一个包含所有元素的列表,如果没找到则返回一个空数组。
  定位到元素后能做哪些操作?常用操作举例如下:
  
  关于 sendkeys 的使用,注意还可以支持下列键盘操作:
  操作效果
  sendKeys(protractor.Key.CONTROL, 'a')
  全选
  sendKeys(protractor.Key.CONTROL, 'c')
  复制
  sendKeys(protractor.Key.CONTROL, 'v')
  粘贴
  sendKeys(protractor.Key.CONTROL, 'x')
  剪切
  下面,我们就可以编写一个实际的测试用例了。下面假设有一个本地的 Web 服务器,打开浏览器之后登录,然后验证一些特定信息是否符合预期,保存为 tc/e2e/scan.js。
  
  执行 Protractor
  
  调试技巧
  
  
  优化策略
  虽然端到端测试可以彻底检查整个系统是否符合用户预期,但是很多人都会感觉到,这样的测试很容易失败,因为即使前端有一些微小的改动或者调整,都会导致很多测试用例的失效。因此,总结下面这几点优化策略:
  下面是一个 Page Object 的例子:
  
  然后在主测试用例文件中,用下面的方式调用:
  
  
  那么,如果只运行跟主页有关的测试,只需要执行:
  
  总结
  本文介绍了端到端测试的主要方法和优化策略,让您可以快速地开始对前端程序进行自动化黑盒测试。
  主要方法有:
  优化策略有:
  到目前为止,我们已经覆盖了“自动化测试金字塔”的大部分内容。下一篇,我们将会介绍目前测试领域的两个新热点:云端测试和性能测试。

百度竞价排名那些事

网站优化优采云 发表了文章 • 0 个评论 • 45 次浏览 • 2022-05-01 15:14 • 来自相关话题

  百度竞价排名那些事
  百度竞价排名
  问题:对于某些核心关键词,在百度上搜索,通常前几名都是百度推广竞价广告,官网自然排名第一却排在后面。
  解决:对于有商标的关键词,可以联系百度申请品牌保护,这样竞争对手就无法投放这个关键词,自然排名就会上去了。对于无法进行品牌保护的关键词,只好也投放百度竞价,提高关键词和目标网址的关联度,以期待使用较低的金额获得较多的点击量。
  综上所述,针对这个网站存在的问题,建议采取以下几个优化步骤:
  第一步:进行网站内部优化,杜绝死链接,加强网站内部链接建设,(内部链接也是反连接,反连接即入站链接,对网站的排名有决定性作用!)。
  第二步:修改后的网站链接及地图重新向搜索引擎提交,向分类目录提交网站。
  第三步:内容建设,主站增加内容更新频度,多对外发布高质量原创文章,并将更新的内容通过新浪微博、新浪博客等外部平台发布,带回反向链接。
  第四步:国内优化需要加强百度产品建设,在百度知道、百度文库、百度经验等百度类网站提交主站信息,或者通过购买高权重百度外链来增加百度权重,来宣传网站、产品和服务。
  第五步:采用竞价排名和SEO优化相结合,为了要让网站更容易被搜索引擎接受合的策略、SMO和SEO相结合的策略,多管齐下,重质量和数量,全面提高网站的权重。
  因为该网站为企业自己的开发人员进行开发,因此需要针对网页开发人员指定一个网页开发规范,下面是专门针对该企业的SEO网页设计规范。
  
  企业网页设计规范
  1.页面:为每个网页添加合适的标题,如果是网站首页,则标题建议使用站点名称或者站点代表的公司、机构名称;其余的内容页面,标题建议做成与正文内容的提炼和概括。标题使用倒序,格式为“页面标题_栏目标题_网站名称”。标题中应当包含该页面最重要的目标关键词。每个页面的标题应该各不相同。
  2.标签:充分利用网站首页或者频道首页的 description 标签,提供此网页内容的概括说明,形式为.内容页面不添加description 标签和 keyword 标签。
  3.导航:确保网站导航都是以html的形式链接。网站应该有明晰的导航和层次结构,网站上重要的网页,应该能从网站比较浅层的位置找到,确保每个页面都可以通过至少一个文本链接到达。站内的页面都要有链接至首页,链接结构为:首页-内页-首页,相关联的网页内容要做互链,如文章下方的“相关文章”功能。所有页面之间应该有广泛的互联,如果无法实现这一点,可以考虑建立一个网站地图。如果站点地图上的链接超过 100 个,则需要将站点地图拆分为多个网页。
  4.链接:使用文字而不是flash、Javascript等来显示重要的内容或链接。当链接到相关内容时,请使用能确切描述该内容的文字。比如,当你为浏览者提供更多Photoshop信息的链接时,使用诸如“关于Photoshop的更多信息”的描述,而不只是“更多信息”。
  5.图片:尽量使用文字而不是图片来显示重要的名称、内容或链接。如果必须对文字性内容使用图片,使用“ALT”属性来加入一些描述性的文字。网站上重要的图片,如:logo,照片,导航图片等,都需要使用“ALT”加上描述。
  
  6.改版:网站改版或者网站内重要页面链接发生变动时,应该将改版前的页面301永久重定向到改版后的页面。网站更换域名,应该将旧域名的所有页面301永久重定向到新域名上对应的页面。
  7.框架:不要使用frame和iframe框架结构。
  8.URL:尽量使用简单的URL地址,如果网站采用动态网页,尽量减少参数的数量和控制参数的长度。
  9.CSS/JS:样式表尽量放在页面的顶部,脚本尽量放在页面的底部,尽量使用外部的CSS和JavaScript文件。
  10.其他:利用网络服务器上的 robots.txt 文件。告诉抓取工具哪些目录可以抓取,哪些目录不可抓取。创建一个sitemap.xml文件并提交到Google Webmaster和百度站长平台。
  云浪网络推广,一直以低成本、有效果为各大企业及广告营销策划公司提供网络推广服务多年,擅长利用百度营销软文首页推广、百度爱采购,百度竞价前三推广(1500一个月,三个月2800,包点击费),官网推广至百度搜索关键词首页有排名为目标。
  【百度快照、百度竞价,百度爱采购、360竞价、、信息流开户,抖音短视频,全网推广咨询:度晓晓】
  
  ‍ 查看全部

  百度竞价排名那些事
  百度竞价排名
  问题:对于某些核心关键词,在百度上搜索,通常前几名都是百度推广竞价广告,官网自然排名第一却排在后面。
  解决:对于有商标的关键词,可以联系百度申请品牌保护,这样竞争对手就无法投放这个关键词,自然排名就会上去了。对于无法进行品牌保护的关键词,只好也投放百度竞价,提高关键词和目标网址的关联度,以期待使用较低的金额获得较多的点击量。
  综上所述,针对这个网站存在的问题,建议采取以下几个优化步骤:
  第一步:进行网站内部优化,杜绝死链接,加强网站内部链接建设,(内部链接也是反连接,反连接即入站链接,对网站的排名有决定性作用!)。
  第二步:修改后的网站链接及地图重新向搜索引擎提交,向分类目录提交网站。
  第三步:内容建设,主站增加内容更新频度,多对外发布高质量原创文章,并将更新的内容通过新浪微博、新浪博客等外部平台发布,带回反向链接。
  第四步:国内优化需要加强百度产品建设,在百度知道、百度文库、百度经验等百度类网站提交主站信息,或者通过购买高权重百度外链来增加百度权重,来宣传网站、产品和服务。
  第五步:采用竞价排名和SEO优化相结合,为了要让网站更容易被搜索引擎接受合的策略、SMO和SEO相结合的策略,多管齐下,重质量和数量,全面提高网站的权重。
  因为该网站为企业自己的开发人员进行开发,因此需要针对网页开发人员指定一个网页开发规范,下面是专门针对该企业的SEO网页设计规范。
  
  企业网页设计规范
  1.页面:为每个网页添加合适的标题,如果是网站首页,则标题建议使用站点名称或者站点代表的公司、机构名称;其余的内容页面,标题建议做成与正文内容的提炼和概括。标题使用倒序,格式为“页面标题_栏目标题_网站名称”。标题中应当包含该页面最重要的目标关键词。每个页面的标题应该各不相同。
  2.标签:充分利用网站首页或者频道首页的 description 标签,提供此网页内容的概括说明,形式为.内容页面不添加description 标签和 keyword 标签。
  3.导航:确保网站导航都是以html的形式链接。网站应该有明晰的导航和层次结构,网站上重要的网页,应该能从网站比较浅层的位置找到,确保每个页面都可以通过至少一个文本链接到达。站内的页面都要有链接至首页,链接结构为:首页-内页-首页,相关联的网页内容要做互链,如文章下方的“相关文章”功能。所有页面之间应该有广泛的互联,如果无法实现这一点,可以考虑建立一个网站地图。如果站点地图上的链接超过 100 个,则需要将站点地图拆分为多个网页。
  4.链接:使用文字而不是flash、Javascript等来显示重要的内容或链接。当链接到相关内容时,请使用能确切描述该内容的文字。比如,当你为浏览者提供更多Photoshop信息的链接时,使用诸如“关于Photoshop的更多信息”的描述,而不只是“更多信息”。
  5.图片:尽量使用文字而不是图片来显示重要的名称、内容或链接。如果必须对文字性内容使用图片,使用“ALT”属性来加入一些描述性的文字。网站上重要的图片,如:logo,照片,导航图片等,都需要使用“ALT”加上描述。
  
  6.改版:网站改版或者网站内重要页面链接发生变动时,应该将改版前的页面301永久重定向到改版后的页面。网站更换域名,应该将旧域名的所有页面301永久重定向到新域名上对应的页面。
  7.框架:不要使用frame和iframe框架结构。
  8.URL:尽量使用简单的URL地址,如果网站采用动态网页,尽量减少参数的数量和控制参数的长度。
  9.CSS/JS:样式表尽量放在页面的顶部,脚本尽量放在页面的底部,尽量使用外部的CSS和JavaScript文件。
  10.其他:利用网络服务器上的 robots.txt 文件。告诉抓取工具哪些目录可以抓取,哪些目录不可抓取。创建一个sitemap.xml文件并提交到Google Webmaster和百度站长平台。
  云浪网络推广,一直以低成本、有效果为各大企业及广告营销策划公司提供网络推广服务多年,擅长利用百度营销软文首页推广、百度爱采购,百度竞价前三推广(1500一个月,三个月2800,包点击费),官网推广至百度搜索关键词首页有排名为目标。
  【百度快照、百度竞价,百度爱采购、360竞价、、信息流开户,抖音短视频,全网推广咨询:度晓晓】
  
  ‍

做网站-做网站公司-专业做网站-做网站价格多少钱

网站优化优采云 发表了文章 • 0 个评论 • 57 次浏览 • 2022-04-30 01:01 • 来自相关话题

  做网站-做网站公司-专业做网站-做网站价格多少钱
  做网站-做网站公司-专业做网站-做网站价格多少钱-誉网科技-欢迎免费咨询(微信同号)
  
  
  
  网站建设需要遵循的制作原则有哪些
  网站建设对于企业来说所起到的作用是相当重要的,在如今这个互联网时代,企业通过网站建设可以更加有利于企业的长远发展。通常来说在建网站之前必要要了解建站目的,对企业的未来发展做好策划、对网站栏目做好规划,还要对网站的色彩搭配,联系方式的更好展现等要做相关的工作,只有这样才能更好的达到网站建设的最终目的。在以上工作做好相关的调查了解和规划后,就可以对网站进行架构和设计开发了,那么在网站建设需要遵循的制作原则有哪些
  一.使用成熟的开发制作技术
  最新的技术也许并不适合企业的网站制作,使用开发人员最熟悉的技术往往会更好,如果使用开发人员不熟悉的技术,边学边写,写的不好不说,在开发上往往会浪费很多的开发时间,因此选择合适的网站开发技术最好。
  二.做好网站结构的布局
  网站的架构不一定设计得很复杂,在网站布局一定要做到层次清晰,业务分明。在布局时候要多考虑网站的优化推广,具体来说在以下几方面中体现:
  1、建立网站地图
  最好给网站建一个完整的网站地图sitemap。同时把网站地图的链接放在首页上,使搜索引擎能很方便的发现和抓取所有网页信息;
  2、网站的内页与首页的关系尤其需要注意,即每个网页最多距离首页四次点击就能到达;
  3、网站的导航最好使用文字链接,避免使用图片或者js;
  4、网站导航中的链接文字应该准确描述栏目的内容;
  5、整站的PR传递和流动,每个分页的权重都传递给首页;
  6、网页的互相链接,即内链;
  三.网站的功能在细节上要做好
  细节可以决定成败,在做网站的过程中把网站的功能做细些,做完善,可以带给用户更好的体验。譬如把网站设计得美观些,可以给人眼前一亮的感觉,也就更加容易吸引到用户。在网站的主题选择上,健康与自然结合的主题界面可以快速获取用户的认可。在建站的色彩选择上,颜色的搭配尽量不要挑选一些刺眼的颜色做网站界面的背景色,这样会影响到用户的审美疲劳以及部分用户的视觉冲击。再者建网站菜单栏的设置,要挑选重点栏目已经要设计得比较突出,容易操作。再次面包屑设置方面,一般的面包屑中每个父级导航都必须加上超链接指向相关页面,这样不会让用户每次返回都要点浏览器的返回按钮或者是菜单导航。最后返回按钮,每个页面都应该有一个返回顶部浮动按钮。建立一个对用户展现友好的界面结构让网站更容易获取用户的好感,对于粘住用户帮助是大大的。
  四.做好网站的相关统计功能
  网站的统计功能包括日志分析统计,性能分析统计,用户分析统计等。做好相关的统计分析,更加有利于后期的网站运维和优化工作。
  五、提升网站的速度
  随着移动端的发展流量入口也越来越偏向移动,如果企业网站的打开速度慢会增加用户等待时间,这样就会造成用户的不好印象,还会影响搜索排名。因此在网站建设过程中,可以通过各种优化技术提升网站的访问速度。
  
  做网站-做网站公司-专业做网站-做网站价格多少钱-誉网科技-欢迎免费咨询(微信同号) 查看全部

  做网站-做网站公司-专业做网站-做网站价格多少钱
  做网站-做网站公司-专业做网站-做网站价格多少钱-誉网科技-欢迎免费咨询(微信同号)
  
  
  
  网站建设需要遵循的制作原则有哪些
  网站建设对于企业来说所起到的作用是相当重要的,在如今这个互联网时代,企业通过网站建设可以更加有利于企业的长远发展。通常来说在建网站之前必要要了解建站目的,对企业的未来发展做好策划、对网站栏目做好规划,还要对网站的色彩搭配,联系方式的更好展现等要做相关的工作,只有这样才能更好的达到网站建设的最终目的。在以上工作做好相关的调查了解和规划后,就可以对网站进行架构和设计开发了,那么在网站建设需要遵循的制作原则有哪些
  一.使用成熟的开发制作技术
  最新的技术也许并不适合企业的网站制作,使用开发人员最熟悉的技术往往会更好,如果使用开发人员不熟悉的技术,边学边写,写的不好不说,在开发上往往会浪费很多的开发时间,因此选择合适的网站开发技术最好。
  二.做好网站结构的布局
  网站的架构不一定设计得很复杂,在网站布局一定要做到层次清晰,业务分明。在布局时候要多考虑网站的优化推广,具体来说在以下几方面中体现:
  1、建立网站地图
  最好给网站建一个完整的网站地图sitemap。同时把网站地图的链接放在首页上,使搜索引擎能很方便的发现和抓取所有网页信息;
  2、网站的内页与首页的关系尤其需要注意,即每个网页最多距离首页四次点击就能到达;
  3、网站的导航最好使用文字链接,避免使用图片或者js;
  4、网站导航中的链接文字应该准确描述栏目的内容;
  5、整站的PR传递和流动,每个分页的权重都传递给首页;
  6、网页的互相链接,即内链;
  三.网站的功能在细节上要做好
  细节可以决定成败,在做网站的过程中把网站的功能做细些,做完善,可以带给用户更好的体验。譬如把网站设计得美观些,可以给人眼前一亮的感觉,也就更加容易吸引到用户。在网站的主题选择上,健康与自然结合的主题界面可以快速获取用户的认可。在建站的色彩选择上,颜色的搭配尽量不要挑选一些刺眼的颜色做网站界面的背景色,这样会影响到用户的审美疲劳以及部分用户的视觉冲击。再者建网站菜单栏的设置,要挑选重点栏目已经要设计得比较突出,容易操作。再次面包屑设置方面,一般的面包屑中每个父级导航都必须加上超链接指向相关页面,这样不会让用户每次返回都要点浏览器的返回按钮或者是菜单导航。最后返回按钮,每个页面都应该有一个返回顶部浮动按钮。建立一个对用户展现友好的界面结构让网站更容易获取用户的好感,对于粘住用户帮助是大大的。
  四.做好网站的相关统计功能
  网站的统计功能包括日志分析统计,性能分析统计,用户分析统计等。做好相关的统计分析,更加有利于后期的网站运维和优化工作。
  五、提升网站的速度
  随着移动端的发展流量入口也越来越偏向移动,如果企业网站的打开速度慢会增加用户等待时间,这样就会造成用户的不好印象,还会影响搜索排名。因此在网站建设过程中,可以通过各种优化技术提升网站的访问速度。
  
  做网站-做网站公司-专业做网站-做网站价格多少钱-誉网科技-欢迎免费咨询(微信同号)

js抓取网页内容(【知识点】DOM及DOM0级事件概述,你了解多少?)

网站优化优采云 发表了文章 • 0 个评论 • 47 次浏览 • 2022-04-20 00:19 • 来自相关话题

  js抓取网页内容(【知识点】DOM及DOM0级事件概述,你了解多少?)
  1.DOM 和 DOM0 级事件概述
  DOM,由三个词组成,Document(文档)Object(对象)Mode(模型)
  1.文档,即整个HTML网页文档
  2.对象,即网页的“每个”部分,这些对象类似于 HTML 标签,
  连评论都是对象,让 JS 更自由地操作网页界面
  3.模型,用于表达对象之间的关系,方便对象的获取
  DOM的作用是通过JS来操作网页
  节点,DOM 中的一个关键概念
  节点:网页的每个部分都是一个节点,无论是标签还是属性,以及文本。我们的共同节点
  分为四类:
  
  上图中,属性节点也有颜色、宽度、高度等标签属性。
  2.DOM0级事件的应用
  DOM 事件,后面跟一个 0 级,表示后面的内容是 DOM 中最基本的事件。
  首先我们了解获取元素节点(HTML标签)的方法
  方法
  描述
  document.getElementById(id)
  通过元素 id 获取 DOM 对象。
  document.getElementsByTagName(HTML 标签)
  通过标签名称获取一个或多个 DOM 对象。
  document.getElementsByClassName(class)
  通过类名获取一个或多个 DOM 对象。
  document.getElementsByName(name)
  按名称获取一个或多个 DOM 对象。
  document.querySelector(CSS 选择器)
  通过 CSS 选择器选择一个元素。
  document.querySelectorAll(CSS 选择器)
  通过 CSS 选择器选择多个元素。
  获取 HTML 值
  方法
  描述
  元素 node.innerText
  获取 HTML 元素的内部 Text。
  元素 node.innerHTML
  获取 HTML 元素的内部 HTML。
  元素节点属性
  获取 HTML 元素的属性值。
  元素节点.getAttribute(属性)
  获取 HTML 元素的属性值。
  元素 node.style.style
  获取 HTML 元素的内联样式值。
  事件:用户与浏览器中内容的交互属于事件,如按钮点击、鼠标移动、
  点击链接等,事件并不关键,关键是处理事件,我们需要一个行为来处理事件
  做一个过程
  事件处理:在事件对应的属性中设置一些JS代码,以便在事件触发时执行代码。
  DOM中有很多事件交互行为语句。我们常用鼠标点击、鼠标移动、鼠标释放等。
  我们通常使用按钮对应的事件绑定函数来处理事件。当触发条件时(如点击按钮、关闭页面),会调用相应的函数,并执行函数中的语句。此方法称为 HTML 事件
  DOM 事件将 HTML 和 JS 代码分开,使代码更清晰,更易于维护。
  请参见以下示例:
  


333


444



呃呃


var tk1 = document.getElementById("tak");
//通过无序列表的ID获取无序列表的元素
var tk2 = document.getElementById("tck");
//通过按钮的ID获取按钮的元素
tk2.onclick = function(){
//按钮被点击时触发函数
tk1.innerHTML = "555666"
//内容是将无序列表的内容换成引号内的代码
}


//script标签在被执行代码的下面,因为代码是自上而下的执行,所以这样能避免不必要的错误
//这样就更改了网页内的内容,并且JS代码与HTML代码是分开的


  当然,这只是最简单的 DOM 应用程序。通过这个例子,可以初步了解一些代码和语句的用法。 查看全部

  js抓取网页内容(【知识点】DOM及DOM0级事件概述,你了解多少?)
  1.DOM 和 DOM0 级事件概述
  DOM,由三个词组成,Document(文档)Object(对象)Mode(模型)
  1.文档,即整个HTML网页文档
  2.对象,即网页的“每个”部分,这些对象类似于 HTML 标签,
  连评论都是对象,让 JS 更自由地操作网页界面
  3.模型,用于表达对象之间的关系,方便对象的获取
  DOM的作用是通过JS来操作网页
  节点,DOM 中的一个关键概念
  节点:网页的每个部分都是一个节点,无论是标签还是属性,以及文本。我们的共同节点
  分为四类:
  
  上图中,属性节点也有颜色、宽度、高度等标签属性。
  2.DOM0级事件的应用
  DOM 事件,后面跟一个 0 级,表示后面的内容是 DOM 中最基本的事件。
  首先我们了解获取元素节点(HTML标签)的方法
  方法
  描述
  document.getElementById(id)
  通过元素 id 获取 DOM 对象。
  document.getElementsByTagName(HTML 标签)
  通过标签名称获取一个或多个 DOM 对象。
  document.getElementsByClassName(class)
  通过类名获取一个或多个 DOM 对象。
  document.getElementsByName(name)
  按名称获取一个或多个 DOM 对象。
  document.querySelector(CSS 选择器)
  通过 CSS 选择器选择一个元素。
  document.querySelectorAll(CSS 选择器)
  通过 CSS 选择器选择多个元素。
  获取 HTML 值
  方法
  描述
  元素 node.innerText
  获取 HTML 元素的内部 Text。
  元素 node.innerHTML
  获取 HTML 元素的内部 HTML。
  元素节点属性
  获取 HTML 元素的属性值。
  元素节点.getAttribute(属性)
  获取 HTML 元素的属性值。
  元素 node.style.style
  获取 HTML 元素的内联样式值。
  事件:用户与浏览器中内容的交互属于事件,如按钮点击、鼠标移动、
  点击链接等,事件并不关键,关键是处理事件,我们需要一个行为来处理事件
  做一个过程
  事件处理:在事件对应的属性中设置一些JS代码,以便在事件触发时执行代码。
  DOM中有很多事件交互行为语句。我们常用鼠标点击、鼠标移动、鼠标释放等。
  我们通常使用按钮对应的事件绑定函数来处理事件。当触发条件时(如点击按钮、关闭页面),会调用相应的函数,并执行函数中的语句。此方法称为 HTML 事件
  DOM 事件将 HTML 和 JS 代码分开,使代码更清晰,更易于维护。
  请参见以下示例:
  


333


444



呃呃


var tk1 = document.getElementById("tak");
//通过无序列表的ID获取无序列表的元素
var tk2 = document.getElementById("tck");
//通过按钮的ID获取按钮的元素
tk2.onclick = function(){
//按钮被点击时触发函数
tk1.innerHTML = "555666"
//内容是将无序列表的内容换成引号内的代码
}


//script标签在被执行代码的下面,因为代码是自上而下的执行,所以这样能避免不必要的错误
//这样就更改了网页内的内容,并且JS代码与HTML代码是分开的


  当然,这只是最简单的 DOM 应用程序。通过这个例子,可以初步了解一些代码和语句的用法。

js抓取网页内容(网页显示javascript是什么原因_相关专题网页抓取优先策略 )

网站优化优采云 发表了文章 • 0 个评论 • 52 次浏览 • 2022-04-19 05:18 • 来自相关话题

  js抓取网页内容(网页显示javascript是什么原因_相关专题网页抓取优先策略
)
  相关话题
  网页抓取优先策略
  18/1/2008 11:30:00
  网络爬取优先策略,也称为“页面选择”(pageSelection),通常是尽可能先爬取重要的网页,以保证在有限的资源范围内,尽可能多的照顾到那些重要的页面。那么哪些页面最重要?如何量化重要性?
  
  为什么网页显示javascript
  29/10/202018:04:14
  网页显示javascript是因为网页中的代码与浏览器不兼容或者网页调用了错误的javascript代码来制作URL。您可以多次刷新它或关闭浏览器并再次打开它。网页中的代码与浏览器兼容
  
  搜索引擎如何抓取网页?
  22/11/2011 09:50:00
  搜索引擎在抓取大量原创网页时,会进行预处理,主要包括四个方面,关键词的提取,“镜像网页”(网页内容完全一致)未经任何修改)或“转载网页”。”(近似复制,主题内容基本相同但可能有一些额外的编辑信息等,转载的网页也称为“近似镜像网页”)消除,链接分析和网页重要性的计算。
  
  翻页式网络搜索引擎如何抓取
  2013 年 7 月 11 日 10:53:00
<p>Spider 系统的目标是发现和爬取 Internet 上所有有价值的网页。百度官方也明确表示,蜘蛛只能抓取尽可能多的有价值资源,并保持系统中页面与实际环境的一致性。@网站经验造成压力,也就是说蜘蛛不会爬取 查看全部

  js抓取网页内容(网页显示javascript是什么原因_相关专题网页抓取优先策略
)
  相关话题
  网页抓取优先策略
  18/1/2008 11:30:00
  网络爬取优先策略,也称为“页面选择”(pageSelection),通常是尽可能先爬取重要的网页,以保证在有限的资源范围内,尽可能多的照顾到那些重要的页面。那么哪些页面最重要?如何量化重要性?
  
  为什么网页显示javascript
  29/10/202018:04:14
  网页显示javascript是因为网页中的代码与浏览器不兼容或者网页调用了错误的javascript代码来制作URL。您可以多次刷新它或关闭浏览器并再次打开它。网页中的代码与浏览器兼容
  
  搜索引擎如何抓取网页?
  22/11/2011 09:50:00
  搜索引擎在抓取大量原创网页时,会进行预处理,主要包括四个方面,关键词的提取,“镜像网页”(网页内容完全一致)未经任何修改)或“转载网页”。”(近似复制,主题内容基本相同但可能有一些额外的编辑信息等,转载的网页也称为“近似镜像网页”)消除,链接分析和网页重要性的计算。
  
  翻页式网络搜索引擎如何抓取
  2013 年 7 月 11 日 10:53:00
<p>Spider 系统的目标是发现和爬取 Internet 上所有有价值的网页。百度官方也明确表示,蜘蛛只能抓取尽可能多的有价值资源,并保持系统中页面与实际环境的一致性。@网站经验造成压力,也就是说蜘蛛不会爬取

js抓取网页内容(请求超时webdriver类中有三个和时间相关的方法:超时时间 )

网站优化优采云 发表了文章 • 0 个评论 • 45 次浏览 • 2022-04-16 11:11 • 来自相关话题

  js抓取网页内容(请求超时webdriver类中有三个和时间相关的方法:超时时间
)
  前言
  本文文字及图片来源于网络,仅供学习交流,不具有任何商业用途。如有任何问题,请及时联系我们进行处理。
  PS:如需Python学习资料,可点击下方链接自行获取
  Python免费学习资料及群交流答案点击加入
  一般我们使用python的第三方库requests和framework scrapy来爬取在线资源,但是javascript渲染的页面是爬不来的。这时候我们使用网页自动化测试工具 Selenium + 无界面浏览器 PhantomJS 来爬取 javascript 渲染的页面,下面实现一个简单的爬取
  ####环境设置
  我的电脑已经安装了python3.5
  安装硒
  pip3 install selenium
  使用 selenium+phantomjs 的简单爬虫
  from selenium import webdriver
&#39;&#39;&#39;
遇到不懂的问题?Python学习交流群:1136201545
满足你的需求,资料都已经上传群文件,可以自行下载!
&#39;&#39;&#39;
driver = webdriver.PhantomJS()
driver.get(&#39;http://www.baidu.com&#39;) #加载网页
data = driver.page_source #获取网页文本
driver.save_screenshot(&#39;1.png&#39;) #截图保存
print(data)
driver.quit()
  selenium+phantomjs的一些使用方法
  在请求头中设置 user-Agent
  from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
&#39;&#39;&#39;
遇到不懂的问题?Python学习交流群:1136201545
满足你的需求,资料都已经上传群文件,可以自行下载!
&#39;&#39;&#39;
dcap = dict(DesiredCapabilities.PHANTOMJS) #设置useragent
dcap[&#39;phantomjs.page.settings.userAgent&#39;] = (&#39;Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0 &#39;) #根据需要设置具体的浏览器信息
driver = webdriver.PhantomJS(desired_capabilities=dcap) #封装浏览器信息
driver.get(&#39;http://www.baidu.com&#39;) #加载网页
data = driver.page_source #获取网页文本
driver.save_screenshot(&#39;1.png&#39;) #截图保存
print(data)
driver.quit()
  ####请求超时设置
  webdriver类中有三个与时间相关的方法:
  1.pageLoadTimeout 设置整页加载的超时时间。完全加载意味着完全渲染,同步和异步脚本都被执行。
  2.setScriptTimeout 设置异步脚本的超时时间
  3.implicitlyWait 智能等待时间识别对象
  from selenium import webdriver

driver = webdriver.PhantomJS()
driver.set_page_load_timeout(5) #设置超时时间
driver.get(&#39;http://www.baidu.com&#39;)
print(driver.title)
driver.quit()
  设置浏览器窗口大小
  调用启动的浏览器不是全屏的,有时候会影响我们的一些操作,所以我们可以设置全屏
  driver.maximize_window() #设置全屏
driver.set_window_size(&#39;480&#39;,&#39;800&#39;) #设置浏览器宽480,高800  
  元素定位
  from selenium import webdriver

driver = webdriver.PhantomJS()
driver.set_page_load_timeout(5)
driver.get(&#39;http://www.baidu.com&#39;)
try:
driver.get(&#39;http://www.baidu.com&#39;)
driver.find_element_by_id(&#39;kw&#39;) # 通过ID定位
driver.find_element_by_class_name(&#39;s_ipt&#39;) # 通过class属性定位
driver.find_element_by_name(&#39;wd&#39;) # 通过标签name属性定位
driver.find_element_by_tag_name(&#39;input&#39;) # 通过标签属性定位
driver.find_element_by_css_selector(&#39;#kw&#39;) # 通过css方式定位
driver.find_element_by_xpath("//input[@id=&#39;kw&#39;]") # 通过xpath方式定位
driver.find_element_by_link_text("贴吧") # 通过xpath方式定位
print(driver.find_element_by_id(&#39;kw&#39;).tag_name ) # 获取标签的类型
except Exception as e:
print(e)
driver.quit()
  向前或向后移动浏览器
  from selenium import webdriver
driver = webdriver.PhantomJS()
try:
driver.get(&#39;http://www.baidu.com&#39;) #访问百度首页
driver.save_screenshot(&#39;1.png&#39;)
driver.get(&#39;http://www.sina.com.cn&#39;) #访问新浪首页
driver.save_screenshot(&#39;2.png&#39;)
driver.back() #回退到百度首页
driver.save_screenshot(&#39;3.png&#39;)
driver.forward() #前进到新浪首页
driver.save_screenshot(&#39;4.png&#39;)
except Exception as e:
print(e)
driver.quit() 查看全部

  js抓取网页内容(请求超时webdriver类中有三个和时间相关的方法:超时时间
)
  前言
  本文文字及图片来源于网络,仅供学习交流,不具有任何商业用途。如有任何问题,请及时联系我们进行处理。
  PS:如需Python学习资料,可点击下方链接自行获取
  Python免费学习资料及群交流答案点击加入
  一般我们使用python的第三方库requests和framework scrapy来爬取在线资源,但是javascript渲染的页面是爬不来的。这时候我们使用网页自动化测试工具 Selenium + 无界面浏览器 PhantomJS 来爬取 javascript 渲染的页面,下面实现一个简单的爬取
  ####环境设置
  我的电脑已经安装了python3.5
  安装硒
  pip3 install selenium
  使用 selenium+phantomjs 的简单爬虫
  from selenium import webdriver
&#39;&#39;&#39;
遇到不懂的问题?Python学习交流群:1136201545
满足你的需求,资料都已经上传群文件,可以自行下载!
&#39;&#39;&#39;
driver = webdriver.PhantomJS()
driver.get(&#39;http://www.baidu.com&#39;) #加载网页
data = driver.page_source #获取网页文本
driver.save_screenshot(&#39;1.png&#39;) #截图保存
print(data)
driver.quit()
  selenium+phantomjs的一些使用方法
  在请求头中设置 user-Agent
  from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
&#39;&#39;&#39;
遇到不懂的问题?Python学习交流群:1136201545
满足你的需求,资料都已经上传群文件,可以自行下载!
&#39;&#39;&#39;
dcap = dict(DesiredCapabilities.PHANTOMJS) #设置useragent
dcap[&#39;phantomjs.page.settings.userAgent&#39;] = (&#39;Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0 &#39;) #根据需要设置具体的浏览器信息
driver = webdriver.PhantomJS(desired_capabilities=dcap) #封装浏览器信息
driver.get(&#39;http://www.baidu.com&#39;) #加载网页
data = driver.page_source #获取网页文本
driver.save_screenshot(&#39;1.png&#39;) #截图保存
print(data)
driver.quit()
  ####请求超时设置
  webdriver类中有三个与时间相关的方法:
  1.pageLoadTimeout 设置整页加载的超时时间。完全加载意味着完全渲染,同步和异步脚本都被执行。
  2.setScriptTimeout 设置异步脚本的超时时间
  3.implicitlyWait 智能等待时间识别对象
  from selenium import webdriver

driver = webdriver.PhantomJS()
driver.set_page_load_timeout(5) #设置超时时间
driver.get(&#39;http://www.baidu.com&#39;)
print(driver.title)
driver.quit()
  设置浏览器窗口大小
  调用启动的浏览器不是全屏的,有时候会影响我们的一些操作,所以我们可以设置全屏
  driver.maximize_window() #设置全屏
driver.set_window_size(&#39;480&#39;,&#39;800&#39;) #设置浏览器宽480,高800  
  元素定位
  from selenium import webdriver

driver = webdriver.PhantomJS()
driver.set_page_load_timeout(5)
driver.get(&#39;http://www.baidu.com&#39;)
try:
driver.get(&#39;http://www.baidu.com&#39;)
driver.find_element_by_id(&#39;kw&#39;) # 通过ID定位
driver.find_element_by_class_name(&#39;s_ipt&#39;) # 通过class属性定位
driver.find_element_by_name(&#39;wd&#39;) # 通过标签name属性定位
driver.find_element_by_tag_name(&#39;input&#39;) # 通过标签属性定位
driver.find_element_by_css_selector(&#39;#kw&#39;) # 通过css方式定位
driver.find_element_by_xpath("//input[@id=&#39;kw&#39;]") # 通过xpath方式定位
driver.find_element_by_link_text("贴吧") # 通过xpath方式定位
print(driver.find_element_by_id(&#39;kw&#39;).tag_name ) # 获取标签的类型
except Exception as e:
print(e)
driver.quit()
  向前或向后移动浏览器
  from selenium import webdriver
driver = webdriver.PhantomJS()
try:
driver.get(&#39;http://www.baidu.com&#39;) #访问百度首页
driver.save_screenshot(&#39;1.png&#39;)
driver.get(&#39;http://www.sina.com.cn&#39;) #访问新浪首页
driver.save_screenshot(&#39;2.png&#39;)
driver.back() #回退到百度首页
driver.save_screenshot(&#39;3.png&#39;)
driver.forward() #前进到新浪首页
driver.save_screenshot(&#39;4.png&#39;)
except Exception as e:
print(e)
driver.quit()

js抓取网页内容(HTML中最常用的节点类型和方法,你知道吗?)

网站优化优采云 发表了文章 • 0 个评论 • 294 次浏览 • 2022-04-11 22:25 • 来自相关话题

  js抓取网页内容(HTML中最常用的节点类型和方法,你知道吗?)
  在HTML中,我们最常用的节点类型有:元素节点Element(1)、属性节点Attr(2)、文本节点Text(3)、文档节点Document(9)) .
  (2)nodeName 和 nodeValue
  这两个属性完全取决于节点的类型,nodeName 是节点的标签名称,nodeValue 是节点的值。对于元素节点 Element,nodeValue 始终为 null。
  2.1.2表示节点关系
  DOM 中的节点具有一定的关系,正是通过这些关系构建了 DOM 树。Node 定义了允许我们通过这些关系来操作 DOM 节点的属性和方法。
  (1)childnodes 属性:该属性返回由节点的所有子节点组成的NodeList 对象。NodeList 对象的操作请参考《JavaScript 高级编程》第一节0.1第 3 版。
  (2)parentNode 属性:指向节点的父节点
  (3)previousSibling 和 nextSibling 属性:前一个和下一个兄弟节点,兄弟节点是具有相同父节点的节点。
  (3)firstChild 和 lastChild 属性:第一个和最后一个子节点
  (4)hasChildNodes()方法:判断一个节点是否有一个或多个子节点
  (5)ownerDocument:指向节点所在的文档对象Document
  注意:虽然每个节点都有childNodes属性,但是有些节点没有子节点,在介绍具体节点类型时会详细说明。
  2.1.3节点操作方法
  (1)最常用的节点操作方法是appendChild(),用来给节点添加子节点,返回新添加的子节点。如果添加的子节点不是调用该方法之前的节点子节点,则将新节点添加到该节点的末尾;否则,将现有子节点移动到该节点的末尾。
  (2)insertBefore():该方法接受两个参数:要插入的节点和引用节点,如果不传递第二个参数,则默认添加到末尾。
  (3)replaceChild():该方法可以起到删除节点的作用,同时也接收两个参数,第一个参数是要插入的节点,第二个参数是要替换的节点;如果参数小于2会报错,被替换节点的所有关系指针都会从它被替换的节点复制过来,被替换的节点还在文档中,但是文档中没有它的位置。
  (4)removeChild():移除一个节点,类似于replaceChild,被移除的节点还在文档中,但是没有地方放。
  2.1.4 其他方法
  (1)cloneNode():cloneNode()方法对一个节点进行复制,并返回复制的节点。该方法还接收一个布尔参数,表示是否进行深拷贝。如果进行深拷贝,则clone this 节点的整个节点树,否则就克隆这个节点。
  注意:IE在进行节点复制的时候有个bug,就是会复制节点的JS属性,比如事件处理函数。
  (2)normalize():该方法的作用是对文档中的文本节点进行处理,如删除空文本节点、合并相邻的两个文本节点等。
  2.2 文档类型
  在 JS 中,Document 类型代表整个文档。在浏览器中,document对象是HTMLDocument的一个实例,代表了整个HTML页面,同时也是window对象的一个​​属性,所以可以作为一个全局对象来访问。它具有以下特点:
  [1] 节点类型为 9
  [2]nodeName 是#document
  [3] 节点值为空
  [4] 父节点为空
  [5] ownerDocument 为空
  [6]子节点可以是DocumentType(最多一个)、Element(最多一个)、ProccessingInstruction或Comment。
  Document 类型可以表示 HTML 页面或其他基于 XML 的文档,但它最常用作 HTMLDocument 的实例来表示 HTML 页面。通过document对象,不仅可以获取页面相关的信息,还可以修改页面的内容和结构。.
  2.2.1 获取文档的子节点
  有两种方法可以获取文档的子节点:通过 documentElement 属性,它指向 html 元素,或者通过 childNodes[0]。
  另外,作为HTMLDocument的一个实例的document对象还有一个body属性,即document.body,它指向该元素。
  Document的子节点也可能是DocumentType,但是浏览器对document.doctype属性的支持不同,可以总结如下:
  [1] IE8及以下,如果有文档类型声明,会被误认为是Comment节点,document.doctype一直为null。
  [2] IE9+等新浏览器,如果有文档类型声明,则作为文档的第一个子节点。
  注:Advanced JavaScript Programming第三版第1节0.1.2提到,当文档类型声明存在时,Safari、chrome和opera会解析文档声明,但不充当子文档的节点在chrome47.0.2526.80中测试,发现是文档的子节点。
  2.2.2 文档信息
  作为 HTMLDocument 的一个实例,文档对象具有普通 Document 实例对象所没有的属性,这些属性提供了一些关于网页的信息:
  (1)document.title:可以通过title属性获取网页的标题,也可以修改网页的标题,修改后的标题会体现在浏览器的标题栏中.
  (2)document.URL, document.domain, document.referrer:这三个属性都对应HTTP头,其中URL属性可以获取完整的URL,domain可以获取域名,referrer可以获取源当前页面的页面,如果没有源页面,则referrer为空。
  这三个属性中,只能设置domain,但是设置的时候有一些限制,即:domain不能设置为不收录在URL属性中的domain,另外如果domain的设置一开始是“loose” ,它不能再设置为“紧”。
  比如开头:document.domain=,然后设置:document.domain=,会报错。
  2.2.3 查找元素
  文档中定义的getElementById和getElementsByTagName方法大概是我们在处理js dom操作时首先接触到的方法。这两种方法在搜索元素时也很常用。此外,HTMLDocument还有一个独特的getElementByName方法,即根据name属性来查找元素。
  (1)getElementById()方法:根据元素的id查找元素。注意这个方法在IE7及以下浏览器中是区分大小写的。另外,如果有多个页面相同的id元素,只会取第一个匹配的元素。在IE7及以下浏览器中还有一个奇怪的现象:如果一个表单元素的name属性匹配方法的id参数,并且该元素匹配id,那么该元素也被返回。
  (2)getElementsByTagName() 方法:根据元素的标签名查找元素。该方法接受一个参数,返回一个由标签名与传入参数匹配的元素组成的NodeList对象。在HTMLDocument中,返回的是一个HTML采集 object,与NodeList非常相似,除了通过item()方法访问具有特定数字索引的节点外,还提供了namedItem()方法来匹配列表中具有特定名称的元素;同时,我们可以直接使用方括号的方法访问列表中的特定元素,可以传入数值索引值或字符串值,后台会自动调用对应的方法。
  注意:我们也可以传入一个“*”通配符来获取页面的所有元素。
  (3)getElementsByName() 方法:这也是HTMLDocument中才有的方法。它根据name属性的值来搜索元素。与getElementByTagName类似,这个方法也返回一个NodeList对象,而在HTMLDocument中它返回一个 HTML采集 对象。
  2.2.4 特辑
  文档对象也有一些特殊的集合,在 DOM0 阶段已经存在很多特殊的集合:
  (1)document.anchors:获取页面中的所有锚点,即具有name属性的a元素。
  (2)document.applet:获取页面中所有的小程序元素,但是现代网络中很少有小程序元素。
  (3)document.images:获取页面中的所有img元素。
  (4)document.links:获取页面上所有带有href属性的a元素。
  2.2.5 DOM 一致性检查
  由于DOM分为多个层次,也收录多个部分,因此需要检测浏览器实现了哪个部分。document.implementation 属性为此提供了信息。DOM1级别只实现了一个document.implementation的方法:hasfeature(),它有两个参数,第一个是DOM特征的名称,第二个是版本号。如果浏览器支持给定的功能和版本,则返回 true,下表列出了可检测的功能和版本号。
  
  DOM一致性检测也是不够的,因为浏览器在实现的时候可以决定是否和DOM的功能一致,而且hasfeature()很容易返回true,但是返回true不代表浏览器确实实现了这个功能. 因此,在使用功能之前,还是需要进行能力测试。
  2.2.6 文档编写
  document 还提供了向文档写入内容的功能,有以下几种方式:
  (1)document.write()和document.writeln():两者的区别是writeln在每次调用结束时都会写一个\n符号。如果这个是在文档加载完之后调用的,这两个方法会重写整个页面。
  (2)document.close()和document.open():分别用于关闭和打开网页的输入流。
  待续~~~
  参考文章:
  [1]0级DOM[]
  分类:
  技术要点:
  相关文章: 查看全部

  js抓取网页内容(HTML中最常用的节点类型和方法,你知道吗?)
  在HTML中,我们最常用的节点类型有:元素节点Element(1)、属性节点Attr(2)、文本节点Text(3)、文档节点Document(9)) .
  (2)nodeName 和 nodeValue
  这两个属性完全取决于节点的类型,nodeName 是节点的标签名称,nodeValue 是节点的值。对于元素节点 Element,nodeValue 始终为 null。
  2.1.2表示节点关系
  DOM 中的节点具有一定的关系,正是通过这些关系构建了 DOM 树。Node 定义了允许我们通过这些关系来操作 DOM 节点的属性和方法。
  (1)childnodes 属性:该属性返回由节点的所有子节点组成的NodeList 对象。NodeList 对象的操作请参考《JavaScript 高级编程》第一节0.1第 3 版。
  (2)parentNode 属性:指向节点的父节点
  (3)previousSibling 和 nextSibling 属性:前一个和下一个兄弟节点,兄弟节点是具有相同父节点的节点。
  (3)firstChild 和 lastChild 属性:第一个和最后一个子节点
  (4)hasChildNodes()方法:判断一个节点是否有一个或多个子节点
  (5)ownerDocument:指向节点所在的文档对象Document
  注意:虽然每个节点都有childNodes属性,但是有些节点没有子节点,在介绍具体节点类型时会详细说明。
  2.1.3节点操作方法
  (1)最常用的节点操作方法是appendChild(),用来给节点添加子节点,返回新添加的子节点。如果添加的子节点不是调用该方法之前的节点子节点,则将新节点添加到该节点的末尾;否则,将现有子节点移动到该节点的末尾。
  (2)insertBefore():该方法接受两个参数:要插入的节点和引用节点,如果不传递第二个参数,则默认添加到末尾。
  (3)replaceChild():该方法可以起到删除节点的作用,同时也接收两个参数,第一个参数是要插入的节点,第二个参数是要替换的节点;如果参数小于2会报错,被替换节点的所有关系指针都会从它被替换的节点复制过来,被替换的节点还在文档中,但是文档中没有它的位置。
  (4)removeChild():移除一个节点,类似于replaceChild,被移除的节点还在文档中,但是没有地方放。
  2.1.4 其他方法
  (1)cloneNode():cloneNode()方法对一个节点进行复制,并返回复制的节点。该方法还接收一个布尔参数,表示是否进行深拷贝。如果进行深拷贝,则clone this 节点的整个节点树,否则就克隆这个节点。
  注意:IE在进行节点复制的时候有个bug,就是会复制节点的JS属性,比如事件处理函数。
  (2)normalize():该方法的作用是对文档中的文本节点进行处理,如删除空文本节点、合并相邻的两个文本节点等。
  2.2 文档类型
  在 JS 中,Document 类型代表整个文档。在浏览器中,document对象是HTMLDocument的一个实例,代表了整个HTML页面,同时也是window对象的一个​​属性,所以可以作为一个全局对象来访问。它具有以下特点:
  [1] 节点类型为 9
  [2]nodeName 是#document
  [3] 节点值为空
  [4] 父节点为空
  [5] ownerDocument 为空
  [6]子节点可以是DocumentType(最多一个)、Element(最多一个)、ProccessingInstruction或Comment。
  Document 类型可以表示 HTML 页面或其他基于 XML 的文档,但它最常用作 HTMLDocument 的实例来表示 HTML 页面。通过document对象,不仅可以获取页面相关的信息,还可以修改页面的内容和结构。.
  2.2.1 获取文档的子节点
  有两种方法可以获取文档的子节点:通过 documentElement 属性,它指向 html 元素,或者通过 childNodes[0]。
  另外,作为HTMLDocument的一个实例的document对象还有一个body属性,即document.body,它指向该元素。
  Document的子节点也可能是DocumentType,但是浏览器对document.doctype属性的支持不同,可以总结如下:
  [1] IE8及以下,如果有文档类型声明,会被误认为是Comment节点,document.doctype一直为null。
  [2] IE9+等新浏览器,如果有文档类型声明,则作为文档的第一个子节点。
  注:Advanced JavaScript Programming第三版第1节0.1.2提到,当文档类型声明存在时,Safari、chrome和opera会解析文档声明,但不充当子文档的节点在chrome47.0.2526.80中测试,发现是文档的子节点。
  2.2.2 文档信息
  作为 HTMLDocument 的一个实例,文档对象具有普通 Document 实例对象所没有的属性,这些属性提供了一些关于网页的信息:
  (1)document.title:可以通过title属性获取网页的标题,也可以修改网页的标题,修改后的标题会体现在浏览器的标题栏中.
  (2)document.URL, document.domain, document.referrer:这三个属性都对应HTTP头,其中URL属性可以获取完整的URL,domain可以获取域名,referrer可以获取源当前页面的页面,如果没有源页面,则referrer为空。
  这三个属性中,只能设置domain,但是设置的时候有一些限制,即:domain不能设置为不收录在URL属性中的domain,另外如果domain的设置一开始是“loose” ,它不能再设置为“紧”。
  比如开头:document.domain=,然后设置:document.domain=,会报错。
  2.2.3 查找元素
  文档中定义的getElementById和getElementsByTagName方法大概是我们在处理js dom操作时首先接触到的方法。这两种方法在搜索元素时也很常用。此外,HTMLDocument还有一个独特的getElementByName方法,即根据name属性来查找元素。
  (1)getElementById()方法:根据元素的id查找元素。注意这个方法在IE7及以下浏览器中是区分大小写的。另外,如果有多个页面相同的id元素,只会取第一个匹配的元素。在IE7及以下浏览器中还有一个奇怪的现象:如果一个表单元素的name属性匹配方法的id参数,并且该元素匹配id,那么该元素也被返回。
  (2)getElementsByTagName() 方法:根据元素的标签名查找元素。该方法接受一个参数,返回一个由标签名与传入参数匹配的元素组成的NodeList对象。在HTMLDocument中,返回的是一个HTML采集 object,与NodeList非常相似,除了通过item()方法访问具有特定数字索引的节点外,还提供了namedItem()方法来匹配列表中具有特定名称的元素;同时,我们可以直接使用方括号的方法访问列表中的特定元素,可以传入数值索引值或字符串值,后台会自动调用对应的方法。
  注意:我们也可以传入一个“*”通配符来获取页面的所有元素。
  (3)getElementsByName() 方法:这也是HTMLDocument中才有的方法。它根据name属性的值来搜索元素。与getElementByTagName类似,这个方法也返回一个NodeList对象,而在HTMLDocument中它返回一个 HTML采集 对象。
  2.2.4 特辑
  文档对象也有一些特殊的集合,在 DOM0 阶段已经存在很多特殊的集合:
  (1)document.anchors:获取页面中的所有锚点,即具有name属性的a元素。
  (2)document.applet:获取页面中所有的小程序元素,但是现代网络中很少有小程序元素。
  (3)document.images:获取页面中的所有img元素。
  (4)document.links:获取页面上所有带有href属性的a元素。
  2.2.5 DOM 一致性检查
  由于DOM分为多个层次,也收录多个部分,因此需要检测浏览器实现了哪个部分。document.implementation 属性为此提供了信息。DOM1级别只实现了一个document.implementation的方法:hasfeature(),它有两个参数,第一个是DOM特征的名称,第二个是版本号。如果浏览器支持给定的功能和版本,则返回 true,下表列出了可检测的功能和版本号。
  
  DOM一致性检测也是不够的,因为浏览器在实现的时候可以决定是否和DOM的功能一致,而且hasfeature()很容易返回true,但是返回true不代表浏览器确实实现了这个功能. 因此,在使用功能之前,还是需要进行能力测试。
  2.2.6 文档编写
  document 还提供了向文档写入内容的功能,有以下几种方式:
  (1)document.write()和document.writeln():两者的区别是writeln在每次调用结束时都会写一个\n符号。如果这个是在文档加载完之后调用的,这两个方法会重写整个页面。
  (2)document.close()和document.open():分别用于关闭和打开网页的输入流。
  待续~~~
  参考文章:
  [1]0级DOM[]
  分类:
  技术要点:
  相关文章:

js抓取网页内容(怎么来提升网站的抓取量:如何控制主动抓取时间)

网站优化优采云 发表了文章 • 0 个评论 • 55 次浏览 • 2022-04-10 00:27 • 来自相关话题

  js抓取网页内容(怎么来提升网站的抓取量:如何控制主动抓取时间)
  网站抓取量是影响网站收录的重要因素,所以控制抓取量非常重要网站,那么如何提高网站的抓取量@网站 抓取量呢?
  网站爬取量=网站总爬取时间/网站单页爬取时间
  那么自然我们可以从两个维度增加网站的抓取量:
  一、减少网站单个页面的爬取时间
  对于网站单个页面的爬取时间,主要是提高网站的性能,主要包括服务器空间和网站代码、JS、图片压缩、视频优化等., 推广网站 会有非常快的打开速度,会缩短搜索引擎程序爬取和下载单个页面的时间,从而访问更多的页面,增加爬取量。
  二、增加网站的总爬取时间
  网站的总爬取时间可以细分为搜索程序的主动爬取和被动爬取
  对于主动爬取,蜘蛛沿着站点中的一个链接不断爬取,那么如何控制主动爬取的时间呢?
  首先很多链接必须是可爬取的,不要让蜘蛛程序不识别或者没有权限,比如js跳转什么的,注册只能访问,然后是网站的物理层和逻辑层应该是短的,物理层面我们可以在首页放一些重要的页面,以缩短物理距离;在逻辑层次上,网站的层次关系要简洁,比如常见的树形结构,首页-栏目页-内容页;后者是内部链接的设置,尽量将网站相关的内容连接成网络,方便爬虫程序爬取。
  至于被动爬取,更多是从站外链接的角度来理解。
  我们可以在站外建立外链,吸引蜘蛛来找我们网站,增加爬取网站的频率和时间,但不要随便为外链做,尽量分享价值,正如百度工程师LEE所说,有推荐值的外链很有用。否则,我们的外部链接的有效性将大大降低。当然,对于一些来Talking的人来说,聊胜于无。
  还有一点需要注意的是允许蜘蛛程序爬取,这涉及到robots文件的设置。其次,很多网站会有反采集系统,有的服务器有防火墙,日志的HTTP状态码,会影响蜘蛛对网页的抓取,从而影响收录@ &gt; 和交通。
  """ 查看全部

  js抓取网页内容(怎么来提升网站的抓取量:如何控制主动抓取时间)
  网站抓取量是影响网站收录的重要因素,所以控制抓取量非常重要网站,那么如何提高网站的抓取量@网站 抓取量呢?
  网站爬取量=网站总爬取时间/网站单页爬取时间
  那么自然我们可以从两个维度增加网站的抓取量:
  一、减少网站单个页面的爬取时间
  对于网站单个页面的爬取时间,主要是提高网站的性能,主要包括服务器空间和网站代码、JS、图片压缩、视频优化等., 推广网站 会有非常快的打开速度,会缩短搜索引擎程序爬取和下载单个页面的时间,从而访问更多的页面,增加爬取量。
  二、增加网站的总爬取时间
  网站的总爬取时间可以细分为搜索程序的主动爬取和被动爬取
  对于主动爬取,蜘蛛沿着站点中的一个链接不断爬取,那么如何控制主动爬取的时间呢?
  首先很多链接必须是可爬取的,不要让蜘蛛程序不识别或者没有权限,比如js跳转什么的,注册只能访问,然后是网站的物理层和逻辑层应该是短的,物理层面我们可以在首页放一些重要的页面,以缩短物理距离;在逻辑层次上,网站的层次关系要简洁,比如常见的树形结构,首页-栏目页-内容页;后者是内部链接的设置,尽量将网站相关的内容连接成网络,方便爬虫程序爬取。
  至于被动爬取,更多是从站外链接的角度来理解。
  我们可以在站外建立外链,吸引蜘蛛来找我们网站,增加爬取网站的频率和时间,但不要随便为外链做,尽量分享价值,正如百度工程师LEE所说,有推荐值的外链很有用。否则,我们的外部链接的有效性将大大降低。当然,对于一些来Talking的人来说,聊胜于无。
  还有一点需要注意的是允许蜘蛛程序爬取,这涉及到robots文件的设置。其次,很多网站会有反采集系统,有的服务器有防火墙,日志的HTTP状态码,会影响蜘蛛对网页的抓取,从而影响收录@ &gt; 和交通。
  """

js抓取网页内容( 这了,更多相关Node.js爬取图片(组图))

网站优化优采云 发表了文章 • 0 个评论 • 160 次浏览 • 2022-04-07 20:01 • 来自相关话题

  js抓取网页内容(
这了,更多相关Node.js爬取图片(组图))
  Node.js实现爬取网站图片的示例代码
  目录编写核心代码示例截图涉及知识点
  开发一个小型爬虫,涉及的知识点如下:
  关于cheerio
  什么是cheerio?
  Cheerio 是 jQuery 核心实现的特定于服务器的、快速、灵活的实现。主要用于服务端解析html。特点如下:
  安装cheerio
  首先在命令行下切换到程序目录,然后输入安装命令进行安装,如下:
  cnpm install cheerio
  安装过程如下:
  
  准备好工作了
  在编写爬虫之前,首先需要对目标内容进行分析。这次需要爬取某个网站,星空类型的图片内容。经过分析发现,所有的图片都是ul下每个li中的a标签在img里面,这次只需要解析出img的src属性就可以得到图片的下载路径。如下:
  
  核心代码
  经过以上分析,代码通过Node.js编写,分两步获取所有图片的url路径,即解析所有目标img元素的src属性。然后下载特定图像并保存。
  引用所需的功能模块如下:
  var https = require('https');
var cheerio = require('cheerio');
var fs = require('fs');
  获取并解析html页面内容如下:
<p>//爬取的网址
var addrs=['https://www.*****.com/topic/show_27202_1.html','https://www.******.com/topic/show_27202_2.html','https://www.*****.com/topic/show_27202_3.html'];
var logger = fs.createWriteStream('./download/log.txt',{flags:'a+',autoClose:'true'});
for(i in addrs){
(function(num){
var addr = addrs[num];
//创建目录
var p1 = new Promise(function(resolve,reject){
fs.access('./download',function(err){
if(err){
fs.mkdir('./download',function(e){
if(e){
console.log('创建失败');
}
});
}else{
resolve("success");
}
});
});
p1.then(function(datas){
var html='';
var p2 = new Promise(function(resolve,reject){
https.get(addr,function(res){
res.on('data',function(data){
html+=data.toString();
})
res.on('end',function(){
resolve("success");
});
});
});
p2.then(function(data){
//下载完成后,进行解析
const $ =cheerio.load(html);
var lis = $('#img-list-outer').find('li');
for(var j=0;j 查看全部

  js抓取网页内容(
这了,更多相关Node.js爬取图片(组图))
  Node.js实现爬取网站图片的示例代码
  目录编写核心代码示例截图涉及知识点
  开发一个小型爬虫,涉及的知识点如下:
  关于cheerio
  什么是cheerio?
  Cheerio 是 jQuery 核心实现的特定于服务器的、快速、灵活的实现。主要用于服务端解析html。特点如下:
  安装cheerio
  首先在命令行下切换到程序目录,然后输入安装命令进行安装,如下:
  cnpm install cheerio
  安装过程如下:
  
  准备好工作了
  在编写爬虫之前,首先需要对目标内容进行分析。这次需要爬取某个网站,星空类型的图片内容。经过分析发现,所有的图片都是ul下每个li中的a标签在img里面,这次只需要解析出img的src属性就可以得到图片的下载路径。如下:
  
  核心代码
  经过以上分析,代码通过Node.js编写,分两步获取所有图片的url路径,即解析所有目标img元素的src属性。然后下载特定图像并保存。
  引用所需的功能模块如下:
  var https = require('https');
var cheerio = require('cheerio');
var fs = require('fs');
  获取并解析html页面内容如下:
<p>//爬取的网址
var addrs=['https://www.*****.com/topic/show_27202_1.html','https://www.******.com/topic/show_27202_2.html','https://www.*****.com/topic/show_27202_3.html'];
var logger = fs.createWriteStream('./download/log.txt',{flags:'a+',autoClose:'true'});
for(i in addrs){
(function(num){
var addr = addrs[num];
//创建目录
var p1 = new Promise(function(resolve,reject){
fs.access('./download',function(err){
if(err){
fs.mkdir('./download',function(e){
if(e){
console.log('创建失败');
}
});
}else{
resolve("success");
}
});
});
p1.then(function(datas){
var html='';
var p2 = new Promise(function(resolve,reject){
https.get(addr,function(res){
res.on('data',function(data){
html+=data.toString();
})
res.on('end',function(){
resolve("success");
});
});
});
p2.then(function(data){
//下载完成后,进行解析
const $ =cheerio.load(html);
var lis = $('#img-list-outer').find('li');
for(var j=0;j

js抓取网页内容(第二次刷新页面获取frame内容(title=framename))

网站优化优采云 发表了文章 • 0 个评论 • 45 次浏览 • 2022-04-07 18:02 • 来自相关话题

  js抓取网页内容(第二次刷新页面获取frame内容(title=framename))
  js抓取网页内容:设置窗口刷新的间隔时间,比如说:60毫秒,2s。即第一次刷新页面,能获取第一个frame内容(title=framename),第二次刷新页面获取frame内容(title=title),以此类推。cookie保存第一次抓取到的网页内容js内容:把第一次抓取到的内容以iframe的形式保存下来,后面就不用刷新页面了。就酱~。
  没人正确回答你的问题。为什么frame会放在tr里面?判断这个frame存不存在的直接方法是看tr的rank,和tl的rank。
  搞清楚th的作用;然后判断是不是需要保存
  直接通过用python的迭代器,去读,判断文本形式类型,是numpy数组就保存,是while循环,
  python有个库叫xpath,可以通过正则表达式获取文本格式的标签,然后用beautifulsoup进行解析,
  normalizationtemplateinpythonwritingresponsewithnormalization·issue#446·pythonrepository/response
  可以用beautifulsoup库,可以直接拿解析出来的dom类型的数据。
  写个函数把列表解析为dom结构,然后存到image的cookiesession中,然后去webdriver抓,
  有趣的问题:技术解析,抓取部分网页,搞定使用python解析youtube视频,效果如下,解析时把坐标加密,只在上面抓了,下面的版本不展示了! 查看全部

  js抓取网页内容(第二次刷新页面获取frame内容(title=framename))
  js抓取网页内容:设置窗口刷新的间隔时间,比如说:60毫秒,2s。即第一次刷新页面,能获取第一个frame内容(title=framename),第二次刷新页面获取frame内容(title=title),以此类推。cookie保存第一次抓取到的网页内容js内容:把第一次抓取到的内容以iframe的形式保存下来,后面就不用刷新页面了。就酱~。
  没人正确回答你的问题。为什么frame会放在tr里面?判断这个frame存不存在的直接方法是看tr的rank,和tl的rank。
  搞清楚th的作用;然后判断是不是需要保存
  直接通过用python的迭代器,去读,判断文本形式类型,是numpy数组就保存,是while循环,
  python有个库叫xpath,可以通过正则表达式获取文本格式的标签,然后用beautifulsoup进行解析,
  normalizationtemplateinpythonwritingresponsewithnormalization·issue#446·pythonrepository/response
  可以用beautifulsoup库,可以直接拿解析出来的dom类型的数据。
  写个函数把列表解析为dom结构,然后存到image的cookiesession中,然后去webdriver抓,
  有趣的问题:技术解析,抓取部分网页,搞定使用python解析youtube视频,效果如下,解析时把坐标加密,只在上面抓了,下面的版本不展示了!

js抓取网页内容(JavaScript驾驭网页-CSS与DOM利用DOM分割HTML利用分割 )

网站优化优采云 发表了文章 • 0 个评论 • 49 次浏览 • 2022-04-04 08:03 • 来自相关话题

  js抓取网页内容(JavaScript驾驭网页-CSS与DOM利用DOM分割HTML利用分割
)
  JavaScript 控制网页 - CSS 和 DOM
  用 DOM 分割 HTML
  使用 JavaScript 控制网页内容很像烹饪。只是不必清理剩菜,也没有办法享受美味的结果。
  但是,您将能够完成 Web 内容的 HTML 组件:更重要的是,您将具有替换 Web 组件的能力。
  JavaScript 让您可以随心所欲地操作网页的 HTML 代码,打开各种有趣的机会,这一切都归功于标准对象:DOM
  getElementById
  
HTML标签都有一个"id"属性,第个标签的该属性都是独一无二的
可以通过id属性来获取元素
内容
var sceneDesc=document.getElementById("div2");
getElementById可以通过元素的id属性去访问标签
括号里是id的值
  getElementsByTagName
  
也可以通过标签名来获取元素
内容
var divs=document.getElementsByTagName("div");
getElementsByTagName返回所有div标签,结果是一个数组,结果按照标签在HTML中的顺序排列
括号里是标签名
var divs=document.getElementsByTagName("div")[2];
用索引获取第三个div标签
  内部HTML
  
innerHTML特性对所有存储在元素里的内容提供了访问管道
通过innerHTML访问元素内存储的内容:
<p id="story"> you are standing
alone in the woods.
document.getElementById("story").innerHTML;
返回的内容是: you are standing alone in the woods.
innerHTML获取的是指定元素下的所有内容与标签
innerHTML也能用于设置网页内容
document.getElementById("story").innerHTML="You are not alone!";
innerHTML只用来设置可以包含文本的标签</p>
  关于JavaScript控制网页——获取网页元素的知识就给大家介绍了这么多,希望对大家有所帮助!
   查看全部

  js抓取网页内容(JavaScript驾驭网页-CSS与DOM利用DOM分割HTML利用分割
)
  JavaScript 控制网页 - CSS 和 DOM
  用 DOM 分割 HTML
  使用 JavaScript 控制网页内容很像烹饪。只是不必清理剩菜,也没有办法享受美味的结果。
  但是,您将能够完成 Web 内容的 HTML 组件:更重要的是,您将具有替换 Web 组件的能力。
  JavaScript 让您可以随心所欲地操作网页的 HTML 代码,打开各种有趣的机会,这一切都归功于标准对象:DOM
  getElementById
  
HTML标签都有一个"id"属性,第个标签的该属性都是独一无二的
可以通过id属性来获取元素
内容
var sceneDesc=document.getElementById("div2");
getElementById可以通过元素的id属性去访问标签
括号里是id的值
  getElementsByTagName
  
也可以通过标签名来获取元素
内容
var divs=document.getElementsByTagName("div");
getElementsByTagName返回所有div标签,结果是一个数组,结果按照标签在HTML中的顺序排列
括号里是标签名
var divs=document.getElementsByTagName("div")[2];
用索引获取第三个div标签
  内部HTML
  
innerHTML特性对所有存储在元素里的内容提供了访问管道
通过innerHTML访问元素内存储的内容:
<p id="story"> you are standing
alone in the woods.
document.getElementById("story").innerHTML;
返回的内容是: you are standing alone in the woods.
innerHTML获取的是指定元素下的所有内容与标签
innerHTML也能用于设置网页内容
document.getElementById("story").innerHTML="You are not alone!";
innerHTML只用来设置可以包含文本的标签</p>
  关于JavaScript控制网页——获取网页元素的知识就给大家介绍了这么多,希望对大家有所帮助!
  

js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?

网站优化优采云 发表了文章 • 0 个评论 • 51 次浏览 • 2022-06-06 00:32 • 来自相关话题

  js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?
  Web 世界有一个至理名言,就是 Java 提出的“Write once, run everywhere”。但这句话只适用于 Java 么?我们能否也用它来形容 JavaScript 呢?答案是 Yes。
  我将会在这篇文章中介绍同构 JavaScript 应用的概念,并推荐一些资源帮助你构建此类应用。
  一路走来
  多年以前,web 只是一些由 HTML 和 CSS 搭建的静态页面,没有太多的交互。用户的每一个动作都需要服务器来创建并返回一个完整的页面。幸而有了 JavaScript,开发者开始创建很棒的效果,不过 Ajax 的到来才是这场革新的真正开始。Web 开发者开始编写能够与服务端进行交互,且在不重载页面的情况下向服务端发送并接受数据的页面。
  随着时间的推移,客户端代码可以做的事情越来越多,催生了被称作单页面应用(SPA)的一类应用。SPA 在首次加载页面时就获取了所有必需的资源,或者再按需动态加载并且渲染到页面上。 Gmail 和 StackEdit editor 是很棒的 SPA 示例。
  SPA 准许重度的交互设计,因为几乎所有的操作都在客户端执行,保持最低限度地与服务端进行交流。不幸的是,它们也存在一些严重的问题,我们选择几个进行讨论。
  性能
  因为相对于静态页面,SPA 需要更多的客户端代码,需要下载数据的体积也更大。这使得手机加载速度很慢,可能会导致一些极端的状况 —— 比如糟糕的用户体验以及收入上的损失等。依据 Microsoft 的一篇文章 ——
  Bing 的一项研究表明:页面的加载时间每增加 10ms,站点年度总收入就会减少 $250K。
  SEO
  因为单页面应用依赖于 JavaScript 的执行,服务器不会提供它们可能用到的任何 HTML 内容。因此,web 爬虫很难去索引到这些页面。爬虫就是可以向 web 服务器发送请求,并且将结果分析成原始文本的程序,而不需要像一个浏览器运行 JavaScript 那样解释和执行客户端的内容。不久前,Google 优化了搜索引擎的 web 爬虫,现在它也可以抓取基于客户端 JavaScript 所构建的页面了。但是 Bing、Yahoo 以及其他搜索引擎怎么办?一个好的索引对任何公司来说都至关重要,它通常会带来更多的流量以及更高的回报。
  同构 JavaScript 应用
  同构 JavaScript 应用基于 JavaScript 编写,可以在客户端和服务端运行。正因为此,你只需要写一次代码,就可以在服务端渲染静态页面,还可以在客户端完成复杂的交互。所以,这种方式互通了两个世界,并且避免了前面提到了两个问题。
  现在,有很多框架可以帮助你开发这类应用。其中最著名的一个可能是 Meteor。Meter 是一个开源 JavaScript 框架,基于 Node.js 编写,专注于实时 web 应用。我想提到的另一个项目是 Rendr,它是 Airbnb 开发的一款轻量级类库,准许同时在客户端和服务端运行 Backbone.js。
  越来越多的公司将 Node.js 应用到他们的产品中。客户端和服务端的代码共享成为一个更加普通而自然的选择。在我看来,这种做法将是 web 开发的未来。有些类库通过共享模板又增强了这一趋势,比如 React。
  结论
  这篇文章介绍了同构 JavaScript 应用的概念,它是应用开发的一种全新方式,可以最大限度地结合服务端和客户端应用程序。我们还讨论了运用这种方式尝试解决的问题,以及你现在就可以参与实践的一些项目。
  你听说过同构 JavaScript 应用么?你开发过么?你有开发经验么?
  原文:Isomorphic JavaScript Applications — the Future of the Web? 查看全部

  js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?
  Web 世界有一个至理名言,就是 Java 提出的“Write once, run everywhere”。但这句话只适用于 Java 么?我们能否也用它来形容 JavaScript 呢?答案是 Yes。
  我将会在这篇文章中介绍同构 JavaScript 应用的概念,并推荐一些资源帮助你构建此类应用。
  一路走来
  多年以前,web 只是一些由 HTML 和 CSS 搭建的静态页面,没有太多的交互。用户的每一个动作都需要服务器来创建并返回一个完整的页面。幸而有了 JavaScript,开发者开始创建很棒的效果,不过 Ajax 的到来才是这场革新的真正开始。Web 开发者开始编写能够与服务端进行交互,且在不重载页面的情况下向服务端发送并接受数据的页面。
  随着时间的推移,客户端代码可以做的事情越来越多,催生了被称作单页面应用(SPA)的一类应用。SPA 在首次加载页面时就获取了所有必需的资源,或者再按需动态加载并且渲染到页面上。 Gmail 和 StackEdit editor 是很棒的 SPA 示例。
  SPA 准许重度的交互设计,因为几乎所有的操作都在客户端执行,保持最低限度地与服务端进行交流。不幸的是,它们也存在一些严重的问题,我们选择几个进行讨论。
  性能
  因为相对于静态页面,SPA 需要更多的客户端代码,需要下载数据的体积也更大。这使得手机加载速度很慢,可能会导致一些极端的状况 —— 比如糟糕的用户体验以及收入上的损失等。依据 Microsoft 的一篇文章 ——
  Bing 的一项研究表明:页面的加载时间每增加 10ms,站点年度总收入就会减少 $250K。
  SEO
  因为单页面应用依赖于 JavaScript 的执行,服务器不会提供它们可能用到的任何 HTML 内容。因此,web 爬虫很难去索引到这些页面。爬虫就是可以向 web 服务器发送请求,并且将结果分析成原始文本的程序,而不需要像一个浏览器运行 JavaScript 那样解释和执行客户端的内容。不久前,Google 优化了搜索引擎的 web 爬虫,现在它也可以抓取基于客户端 JavaScript 所构建的页面了。但是 Bing、Yahoo 以及其他搜索引擎怎么办?一个好的索引对任何公司来说都至关重要,它通常会带来更多的流量以及更高的回报。
  同构 JavaScript 应用
  同构 JavaScript 应用基于 JavaScript 编写,可以在客户端和服务端运行。正因为此,你只需要写一次代码,就可以在服务端渲染静态页面,还可以在客户端完成复杂的交互。所以,这种方式互通了两个世界,并且避免了前面提到了两个问题。
  现在,有很多框架可以帮助你开发这类应用。其中最著名的一个可能是 Meteor。Meter 是一个开源 JavaScript 框架,基于 Node.js 编写,专注于实时 web 应用。我想提到的另一个项目是 Rendr,它是 Airbnb 开发的一款轻量级类库,准许同时在客户端和服务端运行 Backbone.js。
  越来越多的公司将 Node.js 应用到他们的产品中。客户端和服务端的代码共享成为一个更加普通而自然的选择。在我看来,这种做法将是 web 开发的未来。有些类库通过共享模板又增强了这一趋势,比如 React。
  结论
  这篇文章介绍了同构 JavaScript 应用的概念,它是应用开发的一种全新方式,可以最大限度地结合服务端和客户端应用程序。我们还讨论了运用这种方式尝试解决的问题,以及你现在就可以参与实践的一些项目。
  你听说过同构 JavaScript 应用么?你开发过么?你有开发经验么?
  原文:Isomorphic JavaScript Applications — the Future of the Web?

js抓取网页内容 JavaScript SEO怎么做

网站优化优采云 发表了文章 • 0 个评论 • 43 次浏览 • 2022-05-28 22:03 • 来自相关话题

  js抓取网页内容 JavaScript SEO怎么做
  点击可听原文音频
  Hi. I’m Charles from Cross Border Digital. Are you using JavaScript to build your website? Or maybe you're thinking about using one of the modern JavaScript frameworks like Ember,or Node, or React, or Angular. Great frameworks for building very app-like interfaces on the web.
  大家好,我是来自Cross Border Digital的Charles. 你是否在用JavaScript建站?或者你正在考虑用使用当前比较流行的JavaScript框架:Ember、Node、React 或者是Angular建站。这些都是非常优秀的框架,给网站访客提供类似App的操作体验。
  But there are some specific challenges to using these JavaScript frameworks when it comes to SEO. Today, I want to share some insights and advice to help you use these frameworks in a way that will work with Google and ensure that you can rank your website.
  但是,当涉及到SEO时,使用这些JavaScript框架存在一些特定的挑战。今天,我想分享一些见解和建议,以帮助您以与Google兼容的方式使用这些框架,确保网站在搜索引擎可以获得排名。
  So when it comes to understanding the implications of using JavaScript to build your website, there's really two key things that we need to talk about.
  因此,在理解使用JavaScript开发网站的意味着什么时,实际上需要讨论两个关键问题。
  The first is how Google actually works, how they treat JavaScript, how they understand JavaScript.
  首先是Google的实际工作方式,如何对待JavaScript,如何理解JavaScript。
  And the second is understanding the difference between client-side and server-side rendering of the content and HTML on your website.
  其次是了解网站上内容和HTML在客户端和服务器端渲染的区别。
  These two things together if we can understand these, then we can understand how Google is going to interpret our JavaScript-powered website.
  如果我们能理解这两点,那么就能了解Google如何读取JavaScript网站。
  OK, so let's first talk about Google. There are in fact two parts to Google's crawling and indexing of the web.
  首先来讨论一下谷歌运作方式。谷歌爬取收录网站可以分为两部分:
  The first part, the crawler known as Google bot is the part of the infrastructure that follows every link it can find on the web to uncover every URL on your website and on every other website on the web. The Google bot crawler can't render JavaScript. It's simply visits a page. It will do a very quick pass of any HTML that it finds on the page to see if there are any other links it can follow, but otherwise, it simply passes the URLs that it does find back to the indexer.
  第一部分,被称为Googlebot的爬虫,是搜索引擎基础结构的一部分,它通过页面上的链接,去发现更多的页面。Google bot爬虫无法渲染JavaScript。它只是访问页面。爬虫会快速查找HTML页面上的链接,继续抓取新的页面,没有新页面就会将爬取到的链接返回谷歌索引(indexer)。
  The indexer is the part of Google's infrastructure that completely renders a page of all the content, all of the CSS, all of the layout to try in the content, to try and understand what that page is about. So that when someone does a query, it can return that page if it is relevant. Now the indexer can render JavaScript.
  索引是Google搜索引擎基础结构的一部分,它负责渲染页面的所有内容,CSS,布局以了解该页面的核心信息。当用户在搜索引擎搜索时,才能返回客户搜索相关的页面。Indexer可以渲染JavaScript。
  So it is true to say that Google can render JavaScript-powered web pages.
  因此,谷歌支持渲染基于JavaScript开发的网页。
  But to completely understand the implications of using JavaScript, it is also important to understand the difference between client-side and server-side rendering of JavaScript, because that makes a big difference to the way that Google will interpret your website.
  但是要完全了解使用JavaScript对网站的影响,理解客户端和服务器端JavaScript渲染的区别也很重要,因为会导致Google读取网站的方式有很大的不同。
  So generally speaking, these modern JavaScript frameworks like React, Node, and Ember, and Angular, they render in the client side. That means that when someone visits your web page that's built on one of these frameworks, the JavaScript application is delivered to the browser and then it renders everything in the browser. It calls the CSS, it calls the content, it calls the images, and any other resources required to lay out your web page into the browser and renders them on the client side.
  因此,一般而言,这些现代JavaScript框架(例如React,Node和Ember和Angular)在客户端渲染。这意味着,当用户访问基于这些框架之一开发的网页时,JavaScript应用程序将交付给浏览器,然后在浏览器渲染所有内容。将CSS,文本,图片以及其他与页面展示有关的资源推送到浏览器,在客户端渲染。
  A server side rendering is when all of that work is done on the server and the HTML of the complete page and all of the content is delivered to the browser.
  服务器端渲染是指在服务器端完成所有渲染工作并将完整页面的HTML和所有内容都交付给浏览器。
  Now this has big implications for Google because as we said, the Google bot can't render JavaScript. So that means that when Google bot visits your home page or your JavaScript-powered website, if you're rendering client side, it means that the Google bot will get that JavaScript application, but it can't render any content or any link. So it won't find any other links to crawl. It will have to send that single URL back to the indexer. The indexer will then render that page it will find any links and content on that page. It will send any links back to the crawler so that they can then continue to follow those you URLs to see if they can find any other links.
  这就对Google收录网站产生了重大影响,因为前面所说,Google bot无法渲染JavaScript。因此,这意味着当Googlebot访问您的主页或基于JavaScript的网站时,如果网站是客户端渲染,则意味着Googlebot将获取该JavaScript应用程序,但无法渲染任何内容或任何链接。因此Google bot无法找到页面上的链接。只会返回一个URL给谷歌indexer。谷歌Indexer将渲染页面并发现页面上的更多链接和内容。发现新的链接则会返回给Google bot去继续抓取进一步发现更多的链接。
  And in this way, it really slows down the process of crawling your website in a very big way.And this is particularly relevant for large websites. So the other thing that I have to say about client-side rendering is that Google's indexer uses a version of Chrome for rendering JavaScript-powered websites that is about three years old.
  这就极大地减慢了网站被谷歌抓取的速度,这对于大型网站影响尤为重大。另外,关于客户端渲染,Google的indexer用来来渲染JavaScript网站所使用的Chrome版本已有大约三年的历史。
  And that means that it can't support all the latest features of these modern JavaScript frameworks. So if you're building a JavaScript-powered website that renders on the client side, it is very important that you ensure that it is set up in such a way that it degrades nicely forolder versions of browsers so that Google can render your content and your HTML completely.
  这意味着它不能支持那些现代JavaScript框架的所有最新功能。因此,如果您要构建一个以JavaScript为基础的网站,并在客户端进行渲染,那么确保Google可以完全渲染您的内容和HTML。
  I've seen many cases where a client-side rendered JavaScript page, Google is able to crawl or index part of it but it doesn't see all of the continent because of some of the features that have been included in that page. So very important that your JavaScript-powered web page degrades nicely for all the versions of the browser.
  我看过很多客户端渲染的JavaScript页面,Google能够对其进行抓取和编制索引,但是页面中包含的某些功能谷歌无法完整抓取。因此要确保你基于JavaScript开发网页对于所有版本的浏览器都可以很好地渲染。
  So we know that Google bot can't render JavaScript. And whilst the Google indexer can render JavaScript, we also know that it is limited to older versions of Chrome. So it doesn't support all the latest features of these modern JavaScript frameworks. So if we are doing client-side rendering, it is more difficult to get all of our content indexed and it really does slow down the entire process of crawling and indexing your website, which includes any changes you make. So if you make changes to your website, particularly if you have a large website, it can take weeks or months for those changes to be reflected in the Google index.
  我们知道Google bot无法渲染JavaScript。Google indexer可以呈现JavaScript,但我们也知道它仅限于旧版Chrome。因此,它不支持这些现代JavaScript框架的所有最新功能。因此,如果在进行客户端渲染,则很难对所有的内容建立索引,这确实会减慢对网站被抓取和索引的整个过程,其中包括您所做的任何更改。因此,如果您对网站进行更改,尤其大型网站,则这些更改可能需要数周或数月才能反映在Google索引中。
  So what to do? Well, our strong recommendation is to use old-fashioned content management systems for public facing web sites, first and foremost. If you haven't yet startedthe build of your website, then we would strongly recommend you look at one of the content management systems like Ambraco, or Wordpress, or Drupal. Or if you're doing e-commerce, use one of the platforms like Shopify, or BigCommerce.
  那么该怎么办?我们强烈建议普通网站使用老式的内容管理系统。如果您还没有开始网站的搭建,那么我们强烈建议您考虑内容管理系统,例如Ambraco,Wordpress或Drupal。如果是电商网站,可以考虑用Shopify, BigCommerce电商建站系统。
  These content management applications render everything on the server side and deliver the complete HTML to the browser and to Google, which makes it much easier and faster for Google to completely crawl and index your website.
  这些内容管理应用程序在服务器端呈现所有内容,并向浏览器和Google提供完整的HTML,这使Google能够更轻松,更快地完全抓取您的网站并为其建立索引。
  If you have already built a JavaScript-powered website, or if you really want to for whatever reason, then our drawing recommendation is to configure that application to render everything on the server side and deliver the complete HTML and content to the browser and to Google in the same way that one of these older traditional content management systems does. If you can do that properly, then it will make it a lot easier and faster for Google to index your JavaScript-powered website.
  如果您已经建立了JavaScript网站,或者出于特殊原因确实想要这样做,那么我们的建议是配置该应用程序在服务器端渲染所有内容,并将完整的HTML和内容提供给浏览器和Google 就像这些较旧的传统内容管理系统之一一样。这对于谷歌快速抓取收录你的JavaScript网站会有很大帮助。
  Perhaps, you've already launched a JavaScript-powered website that is rendering everything on the client side. You're not sure how to configure it to do that on the server side. There are third party services like Prerender.io, which might help. They might be worth looking at as well.
  又或许,您已经发布了一个在客户端渲染的基于JavaScript开发的网站,不知道如何改为在服务器端渲染。有一些第三方服务获取可以帮你解决这个问题,比如Prerender.io。可以了解一下。
  So in a nutshell, a lot of SEO is about making it easy for Google and not putting hurdles in Google's way. And when it comes to using JavaScript on your website, there are quite a fewpitfalls and traps that if you're not aware of them, it's easy to fall into.
  简而言之,很多SEO都是为了帮助Google而不是阻碍Google抓取网站。在您的网站上使用JavaScript时,会有很多陷阱,稍不小心就掉入。
  So if you have any questions, we would love to help. So hit us up here on WeChat. We could have you to discuss your specific case and we look forward to talking to you. Thanks.
  如果您有任何疑问,欢迎联系我们微信小编。期待与您交流,谢谢大家。
   查看全部

  js抓取网页内容 JavaScript SEO怎么做
  点击可听原文音频
  Hi. I’m Charles from Cross Border Digital. Are you using JavaScript to build your website? Or maybe you're thinking about using one of the modern JavaScript frameworks like Ember,or Node, or React, or Angular. Great frameworks for building very app-like interfaces on the web.
  大家好,我是来自Cross Border Digital的Charles. 你是否在用JavaScript建站?或者你正在考虑用使用当前比较流行的JavaScript框架:Ember、Node、React 或者是Angular建站。这些都是非常优秀的框架,给网站访客提供类似App的操作体验。
  But there are some specific challenges to using these JavaScript frameworks when it comes to SEO. Today, I want to share some insights and advice to help you use these frameworks in a way that will work with Google and ensure that you can rank your website.
  但是,当涉及到SEO时,使用这些JavaScript框架存在一些特定的挑战。今天,我想分享一些见解和建议,以帮助您以与Google兼容的方式使用这些框架,确保网站在搜索引擎可以获得排名。
  So when it comes to understanding the implications of using JavaScript to build your website, there's really two key things that we need to talk about.
  因此,在理解使用JavaScript开发网站的意味着什么时,实际上需要讨论两个关键问题。
  The first is how Google actually works, how they treat JavaScript, how they understand JavaScript.
  首先是Google的实际工作方式,如何对待JavaScript,如何理解JavaScript。
  And the second is understanding the difference between client-side and server-side rendering of the content and HTML on your website.
  其次是了解网站上内容和HTML在客户端和服务器端渲染的区别。
  These two things together if we can understand these, then we can understand how Google is going to interpret our JavaScript-powered website.
  如果我们能理解这两点,那么就能了解Google如何读取JavaScript网站。
  OK, so let's first talk about Google. There are in fact two parts to Google's crawling and indexing of the web.
  首先来讨论一下谷歌运作方式。谷歌爬取收录网站可以分为两部分:
  The first part, the crawler known as Google bot is the part of the infrastructure that follows every link it can find on the web to uncover every URL on your website and on every other website on the web. The Google bot crawler can't render JavaScript. It's simply visits a page. It will do a very quick pass of any HTML that it finds on the page to see if there are any other links it can follow, but otherwise, it simply passes the URLs that it does find back to the indexer.
  第一部分,被称为Googlebot的爬虫,是搜索引擎基础结构的一部分,它通过页面上的链接,去发现更多的页面。Google bot爬虫无法渲染JavaScript。它只是访问页面。爬虫会快速查找HTML页面上的链接,继续抓取新的页面,没有新页面就会将爬取到的链接返回谷歌索引(indexer)。
  The indexer is the part of Google's infrastructure that completely renders a page of all the content, all of the CSS, all of the layout to try in the content, to try and understand what that page is about. So that when someone does a query, it can return that page if it is relevant. Now the indexer can render JavaScript.
  索引是Google搜索引擎基础结构的一部分,它负责渲染页面的所有内容,CSS,布局以了解该页面的核心信息。当用户在搜索引擎搜索时,才能返回客户搜索相关的页面。Indexer可以渲染JavaScript。
  So it is true to say that Google can render JavaScript-powered web pages.
  因此,谷歌支持渲染基于JavaScript开发的网页。
  But to completely understand the implications of using JavaScript, it is also important to understand the difference between client-side and server-side rendering of JavaScript, because that makes a big difference to the way that Google will interpret your website.
  但是要完全了解使用JavaScript对网站的影响,理解客户端和服务器端JavaScript渲染的区别也很重要,因为会导致Google读取网站的方式有很大的不同。
  So generally speaking, these modern JavaScript frameworks like React, Node, and Ember, and Angular, they render in the client side. That means that when someone visits your web page that's built on one of these frameworks, the JavaScript application is delivered to the browser and then it renders everything in the browser. It calls the CSS, it calls the content, it calls the images, and any other resources required to lay out your web page into the browser and renders them on the client side.
  因此,一般而言,这些现代JavaScript框架(例如React,Node和Ember和Angular)在客户端渲染。这意味着,当用户访问基于这些框架之一开发的网页时,JavaScript应用程序将交付给浏览器,然后在浏览器渲染所有内容。将CSS,文本,图片以及其他与页面展示有关的资源推送到浏览器,在客户端渲染。
  A server side rendering is when all of that work is done on the server and the HTML of the complete page and all of the content is delivered to the browser.
  服务器端渲染是指在服务器端完成所有渲染工作并将完整页面的HTML和所有内容都交付给浏览器。
  Now this has big implications for Google because as we said, the Google bot can't render JavaScript. So that means that when Google bot visits your home page or your JavaScript-powered website, if you're rendering client side, it means that the Google bot will get that JavaScript application, but it can't render any content or any link. So it won't find any other links to crawl. It will have to send that single URL back to the indexer. The indexer will then render that page it will find any links and content on that page. It will send any links back to the crawler so that they can then continue to follow those you URLs to see if they can find any other links.
  这就对Google收录网站产生了重大影响,因为前面所说,Google bot无法渲染JavaScript。因此,这意味着当Googlebot访问您的主页或基于JavaScript的网站时,如果网站是客户端渲染,则意味着Googlebot将获取该JavaScript应用程序,但无法渲染任何内容或任何链接。因此Google bot无法找到页面上的链接。只会返回一个URL给谷歌indexer。谷歌Indexer将渲染页面并发现页面上的更多链接和内容。发现新的链接则会返回给Google bot去继续抓取进一步发现更多的链接。
  And in this way, it really slows down the process of crawling your website in a very big way.And this is particularly relevant for large websites. So the other thing that I have to say about client-side rendering is that Google's indexer uses a version of Chrome for rendering JavaScript-powered websites that is about three years old.
  这就极大地减慢了网站被谷歌抓取的速度,这对于大型网站影响尤为重大。另外,关于客户端渲染,Google的indexer用来来渲染JavaScript网站所使用的Chrome版本已有大约三年的历史。
  And that means that it can't support all the latest features of these modern JavaScript frameworks. So if you're building a JavaScript-powered website that renders on the client side, it is very important that you ensure that it is set up in such a way that it degrades nicely forolder versions of browsers so that Google can render your content and your HTML completely.
  这意味着它不能支持那些现代JavaScript框架的所有最新功能。因此,如果您要构建一个以JavaScript为基础的网站,并在客户端进行渲染,那么确保Google可以完全渲染您的内容和HTML。
  I've seen many cases where a client-side rendered JavaScript page, Google is able to crawl or index part of it but it doesn't see all of the continent because of some of the features that have been included in that page. So very important that your JavaScript-powered web page degrades nicely for all the versions of the browser.
  我看过很多客户端渲染的JavaScript页面,Google能够对其进行抓取和编制索引,但是页面中包含的某些功能谷歌无法完整抓取。因此要确保你基于JavaScript开发网页对于所有版本的浏览器都可以很好地渲染。
  So we know that Google bot can't render JavaScript. And whilst the Google indexer can render JavaScript, we also know that it is limited to older versions of Chrome. So it doesn't support all the latest features of these modern JavaScript frameworks. So if we are doing client-side rendering, it is more difficult to get all of our content indexed and it really does slow down the entire process of crawling and indexing your website, which includes any changes you make. So if you make changes to your website, particularly if you have a large website, it can take weeks or months for those changes to be reflected in the Google index.
  我们知道Google bot无法渲染JavaScript。Google indexer可以呈现JavaScript,但我们也知道它仅限于旧版Chrome。因此,它不支持这些现代JavaScript框架的所有最新功能。因此,如果在进行客户端渲染,则很难对所有的内容建立索引,这确实会减慢对网站被抓取和索引的整个过程,其中包括您所做的任何更改。因此,如果您对网站进行更改,尤其大型网站,则这些更改可能需要数周或数月才能反映在Google索引中。
  So what to do? Well, our strong recommendation is to use old-fashioned content management systems for public facing web sites, first and foremost. If you haven't yet startedthe build of your website, then we would strongly recommend you look at one of the content management systems like Ambraco, or Wordpress, or Drupal. Or if you're doing e-commerce, use one of the platforms like Shopify, or BigCommerce.
  那么该怎么办?我们强烈建议普通网站使用老式的内容管理系统。如果您还没有开始网站的搭建,那么我们强烈建议您考虑内容管理系统,例如Ambraco,Wordpress或Drupal。如果是电商网站,可以考虑用Shopify, BigCommerce电商建站系统。
  These content management applications render everything on the server side and deliver the complete HTML to the browser and to Google, which makes it much easier and faster for Google to completely crawl and index your website.
  这些内容管理应用程序在服务器端呈现所有内容,并向浏览器和Google提供完整的HTML,这使Google能够更轻松,更快地完全抓取您的网站并为其建立索引。
  If you have already built a JavaScript-powered website, or if you really want to for whatever reason, then our drawing recommendation is to configure that application to render everything on the server side and deliver the complete HTML and content to the browser and to Google in the same way that one of these older traditional content management systems does. If you can do that properly, then it will make it a lot easier and faster for Google to index your JavaScript-powered website.
  如果您已经建立了JavaScript网站,或者出于特殊原因确实想要这样做,那么我们的建议是配置该应用程序在服务器端渲染所有内容,并将完整的HTML和内容提供给浏览器和Google 就像这些较旧的传统内容管理系统之一一样。这对于谷歌快速抓取收录你的JavaScript网站会有很大帮助。
  Perhaps, you've already launched a JavaScript-powered website that is rendering everything on the client side. You're not sure how to configure it to do that on the server side. There are third party services like Prerender.io, which might help. They might be worth looking at as well.
  又或许,您已经发布了一个在客户端渲染的基于JavaScript开发的网站,不知道如何改为在服务器端渲染。有一些第三方服务获取可以帮你解决这个问题,比如Prerender.io。可以了解一下。
  So in a nutshell, a lot of SEO is about making it easy for Google and not putting hurdles in Google's way. And when it comes to using JavaScript on your website, there are quite a fewpitfalls and traps that if you're not aware of them, it's easy to fall into.
  简而言之,很多SEO都是为了帮助Google而不是阻碍Google抓取网站。在您的网站上使用JavaScript时,会有很多陷阱,稍不小心就掉入。
  So if you have any questions, we would love to help. So hit us up here on WeChat. We could have you to discuss your specific case and we look forward to talking to you. Thanks.
  如果您有任何疑问,欢迎联系我们微信小编。期待与您交流,谢谢大家。
  

js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?

网站优化优采云 发表了文章 • 0 个评论 • 53 次浏览 • 2022-05-28 21:50 • 来自相关话题

  js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?
  Web 世界有一个至理名言,就是 Java 提出的“Write once, run everywhere”。但这句话只适用于 Java 么?我们能否也用它来形容 JavaScript 呢?答案是 Yes。
  我将会在这篇文章中介绍同构 JavaScript 应用的概念,并推荐一些资源帮助你构建此类应用。
  一路走来
  多年以前,web 只是一些由 HTML 和 CSS 搭建的静态页面,没有太多的交互。用户的每一个动作都需要服务器来创建并返回一个完整的页面。幸而有了 JavaScript,开发者开始创建很棒的效果,不过 Ajax 的到来才是这场革新的真正开始。Web 开发者开始编写能够与服务端进行交互,且在不重载页面的情况下向服务端发送并接受数据的页面。
  随着时间的推移,客户端代码可以做的事情越来越多,催生了被称作单页面应用(SPA)的一类应用。SPA 在首次加载页面时就获取了所有必需的资源,或者再按需动态加载并且渲染到页面上。 Gmail 和 StackEdit editor 是很棒的 SPA 示例。
  SPA 准许重度的交互设计,因为几乎所有的操作都在客户端执行,保持最低限度地与服务端进行交流。不幸的是,它们也存在一些严重的问题,我们选择几个进行讨论。
  性能
  因为相对于静态页面,SPA 需要更多的客户端代码,需要下载数据的体积也更大。这使得手机加载速度很慢,可能会导致一些极端的状况 —— 比如糟糕的用户体验以及收入上的损失等。依据 Microsoft 的一篇文章 ——
  Bing 的一项研究表明:页面的加载时间每增加 10ms,站点年度总收入就会减少 $250K。
  SEO
  因为单页面应用依赖于 JavaScript 的执行,服务器不会提供它们可能用到的任何 HTML 内容。因此,web 爬虫很难去索引到这些页面。爬虫就是可以向 web 服务器发送请求,并且将结果分析成原始文本的程序,而不需要像一个浏览器运行 JavaScript 那样解释和执行客户端的内容。不久前,Google 优化了搜索引擎的 web 爬虫,现在它也可以抓取基于客户端 JavaScript 所构建的页面了。但是 Bing、Yahoo 以及其他搜索引擎怎么办?一个好的索引对任何公司来说都至关重要,它通常会带来更多的流量以及更高的回报。
  同构 JavaScript 应用
  同构 JavaScript 应用基于 JavaScript 编写,可以在客户端和服务端运行。正因为此,你只需要写一次代码,就可以在服务端渲染静态页面,还可以在客户端完成复杂的交互。所以,这种方式互通了两个世界,并且避免了前面提到了两个问题。
  现在,有很多框架可以帮助你开发这类应用。其中最著名的一个可能是 Meteor。Meter 是一个开源 JavaScript 框架,基于 Node.js 编写,专注于实时 web 应用。我想提到的另一个项目是 Rendr,它是 Airbnb 开发的一款轻量级类库,准许同时在客户端和服务端运行 Backbone.js。
  越来越多的公司将 Node.js 应用到他们的产品中。客户端和服务端的代码共享成为一个更加普通而自然的选择。在我看来,这种做法将是 web 开发的未来。有些类库通过共享模板又增强了这一趋势,比如 React。
  结论
  这篇文章介绍了同构 JavaScript 应用的概念,它是应用开发的一种全新方式,可以最大限度地结合服务端和客户端应用程序。我们还讨论了运用这种方式尝试解决的问题,以及你现在就可以参与实践的一些项目。
  你听说过同构 JavaScript 应用么?你开发过么?你有开发经验么?
  原文:Isomorphic JavaScript Applications — the Future of the Web? 查看全部

  js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?
  Web 世界有一个至理名言,就是 Java 提出的“Write once, run everywhere”。但这句话只适用于 Java 么?我们能否也用它来形容 JavaScript 呢?答案是 Yes。
  我将会在这篇文章中介绍同构 JavaScript 应用的概念,并推荐一些资源帮助你构建此类应用。
  一路走来
  多年以前,web 只是一些由 HTML 和 CSS 搭建的静态页面,没有太多的交互。用户的每一个动作都需要服务器来创建并返回一个完整的页面。幸而有了 JavaScript,开发者开始创建很棒的效果,不过 Ajax 的到来才是这场革新的真正开始。Web 开发者开始编写能够与服务端进行交互,且在不重载页面的情况下向服务端发送并接受数据的页面。
  随着时间的推移,客户端代码可以做的事情越来越多,催生了被称作单页面应用(SPA)的一类应用。SPA 在首次加载页面时就获取了所有必需的资源,或者再按需动态加载并且渲染到页面上。 Gmail 和 StackEdit editor 是很棒的 SPA 示例。
  SPA 准许重度的交互设计,因为几乎所有的操作都在客户端执行,保持最低限度地与服务端进行交流。不幸的是,它们也存在一些严重的问题,我们选择几个进行讨论。
  性能
  因为相对于静态页面,SPA 需要更多的客户端代码,需要下载数据的体积也更大。这使得手机加载速度很慢,可能会导致一些极端的状况 —— 比如糟糕的用户体验以及收入上的损失等。依据 Microsoft 的一篇文章 ——
  Bing 的一项研究表明:页面的加载时间每增加 10ms,站点年度总收入就会减少 $250K。
  SEO
  因为单页面应用依赖于 JavaScript 的执行,服务器不会提供它们可能用到的任何 HTML 内容。因此,web 爬虫很难去索引到这些页面。爬虫就是可以向 web 服务器发送请求,并且将结果分析成原始文本的程序,而不需要像一个浏览器运行 JavaScript 那样解释和执行客户端的内容。不久前,Google 优化了搜索引擎的 web 爬虫,现在它也可以抓取基于客户端 JavaScript 所构建的页面了。但是 Bing、Yahoo 以及其他搜索引擎怎么办?一个好的索引对任何公司来说都至关重要,它通常会带来更多的流量以及更高的回报。
  同构 JavaScript 应用
  同构 JavaScript 应用基于 JavaScript 编写,可以在客户端和服务端运行。正因为此,你只需要写一次代码,就可以在服务端渲染静态页面,还可以在客户端完成复杂的交互。所以,这种方式互通了两个世界,并且避免了前面提到了两个问题。
  现在,有很多框架可以帮助你开发这类应用。其中最著名的一个可能是 Meteor。Meter 是一个开源 JavaScript 框架,基于 Node.js 编写,专注于实时 web 应用。我想提到的另一个项目是 Rendr,它是 Airbnb 开发的一款轻量级类库,准许同时在客户端和服务端运行 Backbone.js。
  越来越多的公司将 Node.js 应用到他们的产品中。客户端和服务端的代码共享成为一个更加普通而自然的选择。在我看来,这种做法将是 web 开发的未来。有些类库通过共享模板又增强了这一趋势,比如 React。
  结论
  这篇文章介绍了同构 JavaScript 应用的概念,它是应用开发的一种全新方式,可以最大限度地结合服务端和客户端应用程序。我们还讨论了运用这种方式尝试解决的问题,以及你现在就可以参与实践的一些项目。
  你听说过同构 JavaScript 应用么?你开发过么?你有开发经验么?
  原文:Isomorphic JavaScript Applications — the Future of the Web?

js抓取网页内容 【第2030期】JavaScript 启动性能瓶颈分析与解决方案

网站优化优采云 发表了文章 • 0 个评论 • 49 次浏览 • 2022-05-26 16:06 • 来自相关话题

  js抓取网页内容 【第2030期】JavaScript 启动性能瓶颈分析与解决方案
  前言
  找到它存在的意义。今日早读文章由@王下邀月熊翻译授权分享。
  正文从这开始~~
  在 Web 开发中,随着需求的增加与代码库的扩张,我们最终发布的 Web 页面也逐渐膨胀。不过这种膨胀远不止意味着占据更多的传输带宽,其还意味着用户浏览网页时可能更差劲的性能体验。浏览器在下载完某个页面依赖的脚本之后,其还需要经过语法分析、解释与运行这些步骤。而本文则会深入分析浏览器对于 JavaScript 的这些处理流程,挖掘出那些影响你应用启动时间的罪魁祸首,并且根据我个人的经验提出相对应的解决方案。回顾过去,我们还没有专门地考虑过如何去优化 JavaScript 解析/编译这些步骤;我们预想中的是解析器在发现 查看全部

  js抓取网页内容 【第2030期】JavaScript 启动性能瓶颈分析与解决方案
  前言
  找到它存在的意义。今日早读文章由@王下邀月熊翻译授权分享。
  正文从这开始~~
  在 Web 开发中,随着需求的增加与代码库的扩张,我们最终发布的 Web 页面也逐渐膨胀。不过这种膨胀远不止意味着占据更多的传输带宽,其还意味着用户浏览网页时可能更差劲的性能体验。浏览器在下载完某个页面依赖的脚本之后,其还需要经过语法分析、解释与运行这些步骤。而本文则会深入分析浏览器对于 JavaScript 的这些处理流程,挖掘出那些影响你应用启动时间的罪魁祸首,并且根据我个人的经验提出相对应的解决方案。回顾过去,我们还没有专门地考虑过如何去优化 JavaScript 解析/编译这些步骤;我们预想中的是解析器在发现

js抓取网页内容 JavaScript SEO怎么做

网站优化优采云 发表了文章 • 0 个评论 • 73 次浏览 • 2022-05-16 13:24 • 来自相关话题

  js抓取网页内容 JavaScript SEO怎么做
  点击可听原文音频
  Hi. I’m Charles from Cross Border Digital. Are you using JavaScript to build your website? Or maybe you're thinking about using one of the modern JavaScript frameworks like Ember,or Node, or React, or Angular. Great frameworks for building very app-like interfaces on the web.
  大家好,我是来自Cross Border Digital的Charles. 你是否在用JavaScript建站?或者你正在考虑用使用当前比较流行的JavaScript框架:Ember、Node、React 或者是Angular建站。这些都是非常优秀的框架,给网站访客提供类似App的操作体验。
  But there are some specific challenges to using these JavaScript frameworks when it comes to SEO. Today, I want to share some insights and advice to help you use these frameworks in a way that will work with Google and ensure that you can rank your website.
  但是,当涉及到SEO时,使用这些JavaScript框架存在一些特定的挑战。今天,我想分享一些见解和建议,以帮助您以与Google兼容的方式使用这些框架,确保网站在搜索引擎可以获得排名。
  So when it comes to understanding the implications of using JavaScript to build your website, there's really two key things that we need to talk about.
  因此,在理解使用JavaScript开发网站的意味着什么时,实际上需要讨论两个关键问题。
  The first is how Google actually works, how they treat JavaScript, how they understand JavaScript.
  首先是Google的实际工作方式,如何对待JavaScript,如何理解JavaScript。
  And the second is understanding the difference between client-side and server-side rendering of the content and HTML on your website.
  其次是了解网站上内容和HTML在客户端和服务器端渲染的区别。
  These two things together if we can understand these, then we can understand how Google is going to interpret our JavaScript-powered website.
  如果我们能理解这两点,那么就能了解Google如何读取JavaScript网站。
  OK, so let's first talk about Google. There are in fact two parts to Google's crawling and indexing of the web.
  首先来讨论一下谷歌运作方式。谷歌爬取收录网站可以分为两部分:
  The first part, the crawler known as Google bot is the part of the infrastructure that follows every link it can find on the web to uncover every URL on your website and on every other website on the web. The Google bot crawler can't render JavaScript. It's simply visits a page. It will do a very quick pass of any HTML that it finds on the page to see if there are any other links it can follow, but otherwise, it simply passes the URLs that it does find back to the indexer.
  第一部分,被称为Googlebot的爬虫,是搜索引擎基础结构的一部分,它通过页面上的链接,去发现更多的页面。Google bot爬虫无法渲染JavaScript。它只是访问页面。爬虫会快速查找HTML页面上的链接,继续抓取新的页面,没有新页面就会将爬取到的链接返回谷歌索引(indexer)。
  The indexer is the part of Google's infrastructure that completely renders a page of all the content, all of the CSS, all of the layout to try in the content, to try and understand what that page is about. So that when someone does a query, it can return that page if it is relevant. Now the indexer can render JavaScript.
  索引是Google搜索引擎基础结构的一部分,它负责渲染页面的所有内容,CSS,布局以了解该页面的核心信息。当用户在搜索引擎搜索时,才能返回客户搜索相关的页面。Indexer可以渲染JavaScript。
  So it is true to say that Google can render JavaScript-powered web pages.
  因此,谷歌支持渲染基于JavaScript开发的网页。
  But to completely understand the implications of using JavaScript, it is also important to understand the difference between client-side and server-side rendering of JavaScript, because that makes a big difference to the way that Google will interpret your website.
  但是要完全了解使用JavaScript对网站的影响,理解客户端和服务器端JavaScript渲染的区别也很重要,因为会导致Google读取网站的方式有很大的不同。
  So generally speaking, these modern JavaScript frameworks like React, Node, and Ember, and Angular, they render in the client side. That means that when someone visits your web page that's built on one of these frameworks, the JavaScript application is delivered to the browser and then it renders everything in the browser. It calls the CSS, it calls the content, it calls the images, and any other resources required to lay out your web page into the browser and renders them on the client side.
  因此,一般而言,这些现代JavaScript框架(例如React,Node和Ember和Angular)在客户端渲染。这意味着,当用户访问基于这些框架之一开发的网页时,JavaScript应用程序将交付给浏览器,然后在浏览器渲染所有内容。将CSS,文本,图片以及其他与页面展示有关的资源推送到浏览器,在客户端渲染。
  A server side rendering is when all of that work is done on the server and the HTML of the complete page and all of the content is delivered to the browser.
  服务器端渲染是指在服务器端完成所有渲染工作并将完整页面的HTML和所有内容都交付给浏览器。
  Now this has big implications for Google because as we said, the Google bot can't render JavaScript. So that means that when Google bot visits your home page or your JavaScript-powered website, if you're rendering client side, it means that the Google bot will get that JavaScript application, but it can't render any content or any link. So it won't find any other links to crawl. It will have to send that single URL back to the indexer. The indexer will then render that page it will find any links and content on that page. It will send any links back to the crawler so that they can then continue to follow those you URLs to see if they can find any other links.
  这就对Google收录网站产生了重大影响,因为前面所说,Google bot无法渲染JavaScript。因此,这意味着当Googlebot访问您的主页或基于JavaScript的网站时,如果网站是客户端渲染,则意味着Googlebot将获取该JavaScript应用程序,但无法渲染任何内容或任何链接。因此Google bot无法找到页面上的链接。只会返回一个URL给谷歌indexer。谷歌Indexer将渲染页面并发现页面上的更多链接和内容。发现新的链接则会返回给Google bot去继续抓取进一步发现更多的链接。
  And in this way, it really slows down the process of crawling your website in a very big way.And this is particularly relevant for large websites. So the other thing that I have to say about client-side rendering is that Google's indexer uses a version of Chrome for rendering JavaScript-powered websites that is about three years old.
  这就极大地减慢了网站被谷歌抓取的速度,这对于大型网站影响尤为重大。另外,关于客户端渲染,Google的indexer用来来渲染JavaScript网站所使用的Chrome版本已有大约三年的历史。
  And that means that it can't support all the latest features of these modern JavaScript frameworks. So if you're building a JavaScript-powered website that renders on the client side, it is very important that you ensure that it is set up in such a way that it degrades nicely forolder versions of browsers so that Google can render your content and your HTML completely.
  这意味着它不能支持那些现代JavaScript框架的所有最新功能。因此,如果您要构建一个以JavaScript为基础的网站,并在客户端进行渲染,那么确保Google可以完全渲染您的内容和HTML。
  I've seen many cases where a client-side rendered JavaScript page, Google is able to crawl or index part of it but it doesn't see all of the continent because of some of the features that have been included in that page. So very important that your JavaScript-powered web page degrades nicely for all the versions of the browser.
  我看过很多客户端渲染的JavaScript页面,Google能够对其进行抓取和编制索引,但是页面中包含的某些功能谷歌无法完整抓取。因此要确保你基于JavaScript开发网页对于所有版本的浏览器都可以很好地渲染。
  So we know that Google bot can't render JavaScript. And whilst the Google indexer can render JavaScript, we also know that it is limited to older versions of Chrome. So it doesn't support all the latest features of these modern JavaScript frameworks. So if we are doing client-side rendering, it is more difficult to get all of our content indexed and it really does slow down the entire process of crawling and indexing your website, which includes any changes you make. So if you make changes to your website, particularly if you have a large website, it can take weeks or months for those changes to be reflected in the Google index.
  我们知道Google bot无法渲染JavaScript。Google indexer可以呈现JavaScript,但我们也知道它仅限于旧版Chrome。因此,它不支持这些现代JavaScript框架的所有最新功能。因此,如果在进行客户端渲染,则很难对所有的内容建立索引,这确实会减慢对网站被抓取和索引的整个过程,其中包括您所做的任何更改。因此,如果您对网站进行更改,尤其大型网站,则这些更改可能需要数周或数月才能反映在Google索引中。
  So what to do? Well, our strong recommendation is to use old-fashioned content management systems for public facing web sites, first and foremost. If you haven't yet startedthe build of your website, then we would strongly recommend you look at one of the content management systems like Ambraco, or Wordpress, or Drupal. Or if you're doing e-commerce, use one of the platforms like Shopify, or BigCommerce.
  那么该怎么办?我们强烈建议普通网站使用老式的内容管理系统。如果您还没有开始网站的搭建,那么我们强烈建议您考虑内容管理系统,例如Ambraco,Wordpress或Drupal。如果是电商网站,可以考虑用Shopify, BigCommerce电商建站系统。
  These content management applications render everything on the server side and deliver the complete HTML to the browser and to Google, which makes it much easier and faster for Google to completely crawl and index your website.
  这些内容管理应用程序在服务器端呈现所有内容,并向浏览器和Google提供完整的HTML,这使Google能够更轻松,更快地完全抓取您的网站并为其建立索引。
  If you have already built a JavaScript-powered website, or if you really want to for whatever reason, then our drawing recommendation is to configure that application to render everything on the server side and deliver the complete HTML and content to the browser and to Google in the same way that one of these older traditional content management systems does. If you can do that properly, then it will make it a lot easier and faster for Google to index your JavaScript-powered website.
  如果您已经建立了JavaScript网站,或者出于特殊原因确实想要这样做,那么我们的建议是配置该应用程序在服务器端渲染所有内容,并将完整的HTML和内容提供给浏览器和Google 就像这些较旧的传统内容管理系统之一一样。这对于谷歌快速抓取收录你的JavaScript网站会有很大帮助。
  Perhaps, you've already launched a JavaScript-powered website that is rendering everything on the client side. You're not sure how to configure it to do that on the server side. There are third party services like Prerender.io, which might help. They might be worth looking at as well.
  又或许,您已经发布了一个在客户端渲染的基于JavaScript开发的网站,不知道如何改为在服务器端渲染。有一些第三方服务获取可以帮你解决这个问题,比如Prerender.io。可以了解一下。
  So in a nutshell, a lot of SEO is about making it easy for Google and not putting hurdles in Google's way. And when it comes to using JavaScript on your website, there are quite a fewpitfalls and traps that if you're not aware of them, it's easy to fall into.
  简而言之,很多SEO都是为了帮助Google而不是阻碍Google抓取网站。在您的网站上使用JavaScript时,会有很多陷阱,稍不小心就掉入。
  So if you have any questions, we would love to help. So hit us up here on WeChat. We could have you to discuss your specific case and we look forward to talking to you. Thanks.
  如果您有任何疑问,欢迎联系我们微信小编。期待与您交流,谢谢大家。
   查看全部

  js抓取网页内容 JavaScript SEO怎么做
  点击可听原文音频
  Hi. I’m Charles from Cross Border Digital. Are you using JavaScript to build your website? Or maybe you're thinking about using one of the modern JavaScript frameworks like Ember,or Node, or React, or Angular. Great frameworks for building very app-like interfaces on the web.
  大家好,我是来自Cross Border Digital的Charles. 你是否在用JavaScript建站?或者你正在考虑用使用当前比较流行的JavaScript框架:Ember、Node、React 或者是Angular建站。这些都是非常优秀的框架,给网站访客提供类似App的操作体验。
  But there are some specific challenges to using these JavaScript frameworks when it comes to SEO. Today, I want to share some insights and advice to help you use these frameworks in a way that will work with Google and ensure that you can rank your website.
  但是,当涉及到SEO时,使用这些JavaScript框架存在一些特定的挑战。今天,我想分享一些见解和建议,以帮助您以与Google兼容的方式使用这些框架,确保网站在搜索引擎可以获得排名。
  So when it comes to understanding the implications of using JavaScript to build your website, there's really two key things that we need to talk about.
  因此,在理解使用JavaScript开发网站的意味着什么时,实际上需要讨论两个关键问题。
  The first is how Google actually works, how they treat JavaScript, how they understand JavaScript.
  首先是Google的实际工作方式,如何对待JavaScript,如何理解JavaScript。
  And the second is understanding the difference between client-side and server-side rendering of the content and HTML on your website.
  其次是了解网站上内容和HTML在客户端和服务器端渲染的区别。
  These two things together if we can understand these, then we can understand how Google is going to interpret our JavaScript-powered website.
  如果我们能理解这两点,那么就能了解Google如何读取JavaScript网站。
  OK, so let's first talk about Google. There are in fact two parts to Google's crawling and indexing of the web.
  首先来讨论一下谷歌运作方式。谷歌爬取收录网站可以分为两部分:
  The first part, the crawler known as Google bot is the part of the infrastructure that follows every link it can find on the web to uncover every URL on your website and on every other website on the web. The Google bot crawler can't render JavaScript. It's simply visits a page. It will do a very quick pass of any HTML that it finds on the page to see if there are any other links it can follow, but otherwise, it simply passes the URLs that it does find back to the indexer.
  第一部分,被称为Googlebot的爬虫,是搜索引擎基础结构的一部分,它通过页面上的链接,去发现更多的页面。Google bot爬虫无法渲染JavaScript。它只是访问页面。爬虫会快速查找HTML页面上的链接,继续抓取新的页面,没有新页面就会将爬取到的链接返回谷歌索引(indexer)。
  The indexer is the part of Google's infrastructure that completely renders a page of all the content, all of the CSS, all of the layout to try in the content, to try and understand what that page is about. So that when someone does a query, it can return that page if it is relevant. Now the indexer can render JavaScript.
  索引是Google搜索引擎基础结构的一部分,它负责渲染页面的所有内容,CSS,布局以了解该页面的核心信息。当用户在搜索引擎搜索时,才能返回客户搜索相关的页面。Indexer可以渲染JavaScript。
  So it is true to say that Google can render JavaScript-powered web pages.
  因此,谷歌支持渲染基于JavaScript开发的网页。
  But to completely understand the implications of using JavaScript, it is also important to understand the difference between client-side and server-side rendering of JavaScript, because that makes a big difference to the way that Google will interpret your website.
  但是要完全了解使用JavaScript对网站的影响,理解客户端和服务器端JavaScript渲染的区别也很重要,因为会导致Google读取网站的方式有很大的不同。
  So generally speaking, these modern JavaScript frameworks like React, Node, and Ember, and Angular, they render in the client side. That means that when someone visits your web page that's built on one of these frameworks, the JavaScript application is delivered to the browser and then it renders everything in the browser. It calls the CSS, it calls the content, it calls the images, and any other resources required to lay out your web page into the browser and renders them on the client side.
  因此,一般而言,这些现代JavaScript框架(例如React,Node和Ember和Angular)在客户端渲染。这意味着,当用户访问基于这些框架之一开发的网页时,JavaScript应用程序将交付给浏览器,然后在浏览器渲染所有内容。将CSS,文本,图片以及其他与页面展示有关的资源推送到浏览器,在客户端渲染。
  A server side rendering is when all of that work is done on the server and the HTML of the complete page and all of the content is delivered to the browser.
  服务器端渲染是指在服务器端完成所有渲染工作并将完整页面的HTML和所有内容都交付给浏览器。
  Now this has big implications for Google because as we said, the Google bot can't render JavaScript. So that means that when Google bot visits your home page or your JavaScript-powered website, if you're rendering client side, it means that the Google bot will get that JavaScript application, but it can't render any content or any link. So it won't find any other links to crawl. It will have to send that single URL back to the indexer. The indexer will then render that page it will find any links and content on that page. It will send any links back to the crawler so that they can then continue to follow those you URLs to see if they can find any other links.
  这就对Google收录网站产生了重大影响,因为前面所说,Google bot无法渲染JavaScript。因此,这意味着当Googlebot访问您的主页或基于JavaScript的网站时,如果网站是客户端渲染,则意味着Googlebot将获取该JavaScript应用程序,但无法渲染任何内容或任何链接。因此Google bot无法找到页面上的链接。只会返回一个URL给谷歌indexer。谷歌Indexer将渲染页面并发现页面上的更多链接和内容。发现新的链接则会返回给Google bot去继续抓取进一步发现更多的链接。
  And in this way, it really slows down the process of crawling your website in a very big way.And this is particularly relevant for large websites. So the other thing that I have to say about client-side rendering is that Google's indexer uses a version of Chrome for rendering JavaScript-powered websites that is about three years old.
  这就极大地减慢了网站被谷歌抓取的速度,这对于大型网站影响尤为重大。另外,关于客户端渲染,Google的indexer用来来渲染JavaScript网站所使用的Chrome版本已有大约三年的历史。
  And that means that it can't support all the latest features of these modern JavaScript frameworks. So if you're building a JavaScript-powered website that renders on the client side, it is very important that you ensure that it is set up in such a way that it degrades nicely forolder versions of browsers so that Google can render your content and your HTML completely.
  这意味着它不能支持那些现代JavaScript框架的所有最新功能。因此,如果您要构建一个以JavaScript为基础的网站,并在客户端进行渲染,那么确保Google可以完全渲染您的内容和HTML。
  I've seen many cases where a client-side rendered JavaScript page, Google is able to crawl or index part of it but it doesn't see all of the continent because of some of the features that have been included in that page. So very important that your JavaScript-powered web page degrades nicely for all the versions of the browser.
  我看过很多客户端渲染的JavaScript页面,Google能够对其进行抓取和编制索引,但是页面中包含的某些功能谷歌无法完整抓取。因此要确保你基于JavaScript开发网页对于所有版本的浏览器都可以很好地渲染。
  So we know that Google bot can't render JavaScript. And whilst the Google indexer can render JavaScript, we also know that it is limited to older versions of Chrome. So it doesn't support all the latest features of these modern JavaScript frameworks. So if we are doing client-side rendering, it is more difficult to get all of our content indexed and it really does slow down the entire process of crawling and indexing your website, which includes any changes you make. So if you make changes to your website, particularly if you have a large website, it can take weeks or months for those changes to be reflected in the Google index.
  我们知道Google bot无法渲染JavaScript。Google indexer可以呈现JavaScript,但我们也知道它仅限于旧版Chrome。因此,它不支持这些现代JavaScript框架的所有最新功能。因此,如果在进行客户端渲染,则很难对所有的内容建立索引,这确实会减慢对网站被抓取和索引的整个过程,其中包括您所做的任何更改。因此,如果您对网站进行更改,尤其大型网站,则这些更改可能需要数周或数月才能反映在Google索引中。
  So what to do? Well, our strong recommendation is to use old-fashioned content management systems for public facing web sites, first and foremost. If you haven't yet startedthe build of your website, then we would strongly recommend you look at one of the content management systems like Ambraco, or Wordpress, or Drupal. Or if you're doing e-commerce, use one of the platforms like Shopify, or BigCommerce.
  那么该怎么办?我们强烈建议普通网站使用老式的内容管理系统。如果您还没有开始网站的搭建,那么我们强烈建议您考虑内容管理系统,例如Ambraco,Wordpress或Drupal。如果是电商网站,可以考虑用Shopify, BigCommerce电商建站系统。
  These content management applications render everything on the server side and deliver the complete HTML to the browser and to Google, which makes it much easier and faster for Google to completely crawl and index your website.
  这些内容管理应用程序在服务器端呈现所有内容,并向浏览器和Google提供完整的HTML,这使Google能够更轻松,更快地完全抓取您的网站并为其建立索引。
  If you have already built a JavaScript-powered website, or if you really want to for whatever reason, then our drawing recommendation is to configure that application to render everything on the server side and deliver the complete HTML and content to the browser and to Google in the same way that one of these older traditional content management systems does. If you can do that properly, then it will make it a lot easier and faster for Google to index your JavaScript-powered website.
  如果您已经建立了JavaScript网站,或者出于特殊原因确实想要这样做,那么我们的建议是配置该应用程序在服务器端渲染所有内容,并将完整的HTML和内容提供给浏览器和Google 就像这些较旧的传统内容管理系统之一一样。这对于谷歌快速抓取收录你的JavaScript网站会有很大帮助。
  Perhaps, you've already launched a JavaScript-powered website that is rendering everything on the client side. You're not sure how to configure it to do that on the server side. There are third party services like Prerender.io, which might help. They might be worth looking at as well.
  又或许,您已经发布了一个在客户端渲染的基于JavaScript开发的网站,不知道如何改为在服务器端渲染。有一些第三方服务获取可以帮你解决这个问题,比如Prerender.io。可以了解一下。
  So in a nutshell, a lot of SEO is about making it easy for Google and not putting hurdles in Google's way. And when it comes to using JavaScript on your website, there are quite a fewpitfalls and traps that if you're not aware of them, it's easy to fall into.
  简而言之,很多SEO都是为了帮助Google而不是阻碍Google抓取网站。在您的网站上使用JavaScript时,会有很多陷阱,稍不小心就掉入。
  So if you have any questions, we would love to help. So hit us up here on WeChat. We could have you to discuss your specific case and we look forward to talking to you. Thanks.
  如果您有任何疑问,欢迎联系我们微信小编。期待与您交流,谢谢大家。
  

js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?

网站优化优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2022-05-15 07:26 • 来自相关话题

  js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?
  Web 世界有一个至理名言,就是 Java 提出的“Write once, run everywhere”。但这句话只适用于 Java 么?我们能否也用它来形容 JavaScript 呢?答案是 Yes。
  我将会在这篇文章中介绍同构 JavaScript 应用的概念,并推荐一些资源帮助你构建此类应用。
  一路走来
  多年以前,web 只是一些由 HTML 和 CSS 搭建的静态页面,没有太多的交互。用户的每一个动作都需要服务器来创建并返回一个完整的页面。幸而有了 JavaScript,开发者开始创建很棒的效果,不过 Ajax 的到来才是这场革新的真正开始。Web 开发者开始编写能够与服务端进行交互,且在不重载页面的情况下向服务端发送并接受数据的页面。
  随着时间的推移,客户端代码可以做的事情越来越多,催生了被称作单页面应用(SPA)的一类应用。SPA 在首次加载页面时就获取了所有必需的资源,或者再按需动态加载并且渲染到页面上。 Gmail 和 StackEdit editor 是很棒的 SPA 示例。
  SPA 准许重度的交互设计,因为几乎所有的操作都在客户端执行,保持最低限度地与服务端进行交流。不幸的是,它们也存在一些严重的问题,我们选择几个进行讨论。
  性能
  因为相对于静态页面,SPA 需要更多的客户端代码,需要下载数据的体积也更大。这使得手机加载速度很慢,可能会导致一些极端的状况 —— 比如糟糕的用户体验以及收入上的损失等。依据 Microsoft 的一篇文章 ——
  Bing 的一项研究表明:页面的加载时间每增加 10ms,站点年度总收入就会减少 $250K。
  SEO
  因为单页面应用依赖于 JavaScript 的执行,服务器不会提供它们可能用到的任何 HTML 内容。因此,web 爬虫很难去索引到这些页面。爬虫就是可以向 web 服务器发送请求,并且将结果分析成原始文本的程序,而不需要像一个浏览器运行 JavaScript 那样解释和执行客户端的内容。不久前,Google 优化了搜索引擎的 web 爬虫,现在它也可以抓取基于客户端 JavaScript 所构建的页面了。但是 Bing、Yahoo 以及其他搜索引擎怎么办?一个好的索引对任何公司来说都至关重要,它通常会带来更多的流量以及更高的回报。
  同构 JavaScript 应用
  同构 JavaScript 应用基于 JavaScript 编写,可以在客户端和服务端运行。正因为此,你只需要写一次代码,就可以在服务端渲染静态页面,还可以在客户端完成复杂的交互。所以,这种方式互通了两个世界,并且避免了前面提到了两个问题。
  现在,有很多框架可以帮助你开发这类应用。其中最著名的一个可能是 Meteor。Meter 是一个开源 JavaScript 框架,基于 Node.js 编写,专注于实时 web 应用。我想提到的另一个项目是 Rendr,它是 Airbnb 开发的一款轻量级类库,准许同时在客户端和服务端运行 Backbone.js。
  越来越多的公司将 Node.js 应用到他们的产品中。客户端和服务端的代码共享成为一个更加普通而自然的选择。在我看来,这种做法将是 web 开发的未来。有些类库通过共享模板又增强了这一趋势,比如 React。
  结论
  这篇文章介绍了同构 JavaScript 应用的概念,它是应用开发的一种全新方式,可以最大限度地结合服务端和客户端应用程序。我们还讨论了运用这种方式尝试解决的问题,以及你现在就可以参与实践的一些项目。
  你听说过同构 JavaScript 应用么?你开发过么?你有开发经验么?
  原文:Isomorphic JavaScript Applications — the Future of the Web? 查看全部

  js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?
  Web 世界有一个至理名言,就是 Java 提出的“Write once, run everywhere”。但这句话只适用于 Java 么?我们能否也用它来形容 JavaScript 呢?答案是 Yes。
  我将会在这篇文章中介绍同构 JavaScript 应用的概念,并推荐一些资源帮助你构建此类应用。
  一路走来
  多年以前,web 只是一些由 HTML 和 CSS 搭建的静态页面,没有太多的交互。用户的每一个动作都需要服务器来创建并返回一个完整的页面。幸而有了 JavaScript,开发者开始创建很棒的效果,不过 Ajax 的到来才是这场革新的真正开始。Web 开发者开始编写能够与服务端进行交互,且在不重载页面的情况下向服务端发送并接受数据的页面。
  随着时间的推移,客户端代码可以做的事情越来越多,催生了被称作单页面应用(SPA)的一类应用。SPA 在首次加载页面时就获取了所有必需的资源,或者再按需动态加载并且渲染到页面上。 Gmail 和 StackEdit editor 是很棒的 SPA 示例。
  SPA 准许重度的交互设计,因为几乎所有的操作都在客户端执行,保持最低限度地与服务端进行交流。不幸的是,它们也存在一些严重的问题,我们选择几个进行讨论。
  性能
  因为相对于静态页面,SPA 需要更多的客户端代码,需要下载数据的体积也更大。这使得手机加载速度很慢,可能会导致一些极端的状况 —— 比如糟糕的用户体验以及收入上的损失等。依据 Microsoft 的一篇文章 ——
  Bing 的一项研究表明:页面的加载时间每增加 10ms,站点年度总收入就会减少 $250K。
  SEO
  因为单页面应用依赖于 JavaScript 的执行,服务器不会提供它们可能用到的任何 HTML 内容。因此,web 爬虫很难去索引到这些页面。爬虫就是可以向 web 服务器发送请求,并且将结果分析成原始文本的程序,而不需要像一个浏览器运行 JavaScript 那样解释和执行客户端的内容。不久前,Google 优化了搜索引擎的 web 爬虫,现在它也可以抓取基于客户端 JavaScript 所构建的页面了。但是 Bing、Yahoo 以及其他搜索引擎怎么办?一个好的索引对任何公司来说都至关重要,它通常会带来更多的流量以及更高的回报。
  同构 JavaScript 应用
  同构 JavaScript 应用基于 JavaScript 编写,可以在客户端和服务端运行。正因为此,你只需要写一次代码,就可以在服务端渲染静态页面,还可以在客户端完成复杂的交互。所以,这种方式互通了两个世界,并且避免了前面提到了两个问题。
  现在,有很多框架可以帮助你开发这类应用。其中最著名的一个可能是 Meteor。Meter 是一个开源 JavaScript 框架,基于 Node.js 编写,专注于实时 web 应用。我想提到的另一个项目是 Rendr,它是 Airbnb 开发的一款轻量级类库,准许同时在客户端和服务端运行 Backbone.js。
  越来越多的公司将 Node.js 应用到他们的产品中。客户端和服务端的代码共享成为一个更加普通而自然的选择。在我看来,这种做法将是 web 开发的未来。有些类库通过共享模板又增强了这一趋势,比如 React。
  结论
  这篇文章介绍了同构 JavaScript 应用的概念,它是应用开发的一种全新方式,可以最大限度地结合服务端和客户端应用程序。我们还讨论了运用这种方式尝试解决的问题,以及你现在就可以参与实践的一些项目。
  你听说过同构 JavaScript 应用么?你开发过么?你有开发经验么?
  原文:Isomorphic JavaScript Applications — the Future of the Web?

js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?

网站优化优采云 发表了文章 • 0 个评论 • 70 次浏览 • 2022-05-13 20:19 • 来自相关话题

  js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?
  Web 世界有一个至理名言,就是 Java 提出的“Write once, run everywhere”。但这句话只适用于 Java 么?我们能否也用它来形容 JavaScript 呢?答案是 Yes。
  我将会在这篇文章中介绍同构 JavaScript 应用的概念,并推荐一些资源帮助你构建此类应用。
  一路走来
  多年以前,web 只是一些由 HTML 和 CSS 搭建的静态页面,没有太多的交互。用户的每一个动作都需要服务器来创建并返回一个完整的页面。幸而有了 JavaScript,开发者开始创建很棒的效果,不过 Ajax 的到来才是这场革新的真正开始。Web 开发者开始编写能够与服务端进行交互,且在不重载页面的情况下向服务端发送并接受数据的页面。
  随着时间的推移,客户端代码可以做的事情越来越多,催生了被称作单页面应用(SPA)的一类应用。SPA 在首次加载页面时就获取了所有必需的资源,或者再按需动态加载并且渲染到页面上。 Gmail 和 StackEdit editor 是很棒的 SPA 示例。
  SPA 准许重度的交互设计,因为几乎所有的操作都在客户端执行,保持最低限度地与服务端进行交流。不幸的是,它们也存在一些严重的问题,我们选择几个进行讨论。
  性能
  因为相对于静态页面,SPA 需要更多的客户端代码,需要下载数据的体积也更大。这使得手机加载速度很慢,可能会导致一些极端的状况 —— 比如糟糕的用户体验以及收入上的损失等。依据 Microsoft 的一篇文章 ——
  Bing 的一项研究表明:页面的加载时间每增加 10ms,站点年度总收入就会减少 $250K。
  SEO
  因为单页面应用依赖于 JavaScript 的执行,服务器不会提供它们可能用到的任何 HTML 内容。因此,web 爬虫很难去索引到这些页面。爬虫就是可以向 web 服务器发送请求,并且将结果分析成原始文本的程序,而不需要像一个浏览器运行 JavaScript 那样解释和执行客户端的内容。不久前,Google 优化了搜索引擎的 web 爬虫,现在它也可以抓取基于客户端 JavaScript 所构建的页面了。但是 Bing、Yahoo 以及其他搜索引擎怎么办?一个好的索引对任何公司来说都至关重要,它通常会带来更多的流量以及更高的回报。
  同构 JavaScript 应用
  同构 JavaScript 应用基于 JavaScript 编写,可以在客户端和服务端运行。正因为此,你只需要写一次代码,就可以在服务端渲染静态页面,还可以在客户端完成复杂的交互。所以,这种方式互通了两个世界,并且避免了前面提到了两个问题。
  现在,有很多框架可以帮助你开发这类应用。其中最著名的一个可能是 Meteor。Meter 是一个开源 JavaScript 框架,基于 Node.js 编写,专注于实时 web 应用。我想提到的另一个项目是 Rendr,它是 Airbnb 开发的一款轻量级类库,准许同时在客户端和服务端运行 Backbone.js。
  越来越多的公司将 Node.js 应用到他们的产品中。客户端和服务端的代码共享成为一个更加普通而自然的选择。在我看来,这种做法将是 web 开发的未来。有些类库通过共享模板又增强了这一趋势,比如 React。
  结论
  这篇文章介绍了同构 JavaScript 应用的概念,它是应用开发的一种全新方式,可以最大限度地结合服务端和客户端应用程序。我们还讨论了运用这种方式尝试解决的问题,以及你现在就可以参与实践的一些项目。
  你听说过同构 JavaScript 应用么?你开发过么?你有开发经验么?
  原文:Isomorphic JavaScript Applications — the Future of the Web? 查看全部

  js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?
  Web 世界有一个至理名言,就是 Java 提出的“Write once, run everywhere”。但这句话只适用于 Java 么?我们能否也用它来形容 JavaScript 呢?答案是 Yes。
  我将会在这篇文章中介绍同构 JavaScript 应用的概念,并推荐一些资源帮助你构建此类应用。
  一路走来
  多年以前,web 只是一些由 HTML 和 CSS 搭建的静态页面,没有太多的交互。用户的每一个动作都需要服务器来创建并返回一个完整的页面。幸而有了 JavaScript,开发者开始创建很棒的效果,不过 Ajax 的到来才是这场革新的真正开始。Web 开发者开始编写能够与服务端进行交互,且在不重载页面的情况下向服务端发送并接受数据的页面。
  随着时间的推移,客户端代码可以做的事情越来越多,催生了被称作单页面应用(SPA)的一类应用。SPA 在首次加载页面时就获取了所有必需的资源,或者再按需动态加载并且渲染到页面上。 Gmail 和 StackEdit editor 是很棒的 SPA 示例。
  SPA 准许重度的交互设计,因为几乎所有的操作都在客户端执行,保持最低限度地与服务端进行交流。不幸的是,它们也存在一些严重的问题,我们选择几个进行讨论。
  性能
  因为相对于静态页面,SPA 需要更多的客户端代码,需要下载数据的体积也更大。这使得手机加载速度很慢,可能会导致一些极端的状况 —— 比如糟糕的用户体验以及收入上的损失等。依据 Microsoft 的一篇文章 ——
  Bing 的一项研究表明:页面的加载时间每增加 10ms,站点年度总收入就会减少 $250K。
  SEO
  因为单页面应用依赖于 JavaScript 的执行,服务器不会提供它们可能用到的任何 HTML 内容。因此,web 爬虫很难去索引到这些页面。爬虫就是可以向 web 服务器发送请求,并且将结果分析成原始文本的程序,而不需要像一个浏览器运行 JavaScript 那样解释和执行客户端的内容。不久前,Google 优化了搜索引擎的 web 爬虫,现在它也可以抓取基于客户端 JavaScript 所构建的页面了。但是 Bing、Yahoo 以及其他搜索引擎怎么办?一个好的索引对任何公司来说都至关重要,它通常会带来更多的流量以及更高的回报。
  同构 JavaScript 应用
  同构 JavaScript 应用基于 JavaScript 编写,可以在客户端和服务端运行。正因为此,你只需要写一次代码,就可以在服务端渲染静态页面,还可以在客户端完成复杂的交互。所以,这种方式互通了两个世界,并且避免了前面提到了两个问题。
  现在,有很多框架可以帮助你开发这类应用。其中最著名的一个可能是 Meteor。Meter 是一个开源 JavaScript 框架,基于 Node.js 编写,专注于实时 web 应用。我想提到的另一个项目是 Rendr,它是 Airbnb 开发的一款轻量级类库,准许同时在客户端和服务端运行 Backbone.js。
  越来越多的公司将 Node.js 应用到他们的产品中。客户端和服务端的代码共享成为一个更加普通而自然的选择。在我看来,这种做法将是 web 开发的未来。有些类库通过共享模板又增强了这一趋势,比如 React。
  结论
  这篇文章介绍了同构 JavaScript 应用的概念,它是应用开发的一种全新方式,可以最大限度地结合服务端和客户端应用程序。我们还讨论了运用这种方式尝试解决的问题,以及你现在就可以参与实践的一些项目。
  你听说过同构 JavaScript 应用么?你开发过么?你有开发经验么?
  原文:Isomorphic JavaScript Applications — the Future of the Web?

一日一技:爬虫如何正确从网页中提取伪元素?

网站优化优采云 发表了文章 • 0 个评论 • 82 次浏览 • 2022-05-05 20:16 • 来自相关话题

  一日一技:爬虫如何正确从网页中提取伪元素?
  
  摄影:产品经理家里做点简单菜
  我们来看一个网页,大家想想使用 XPath 怎么抓取。
  
  可以看到,在源代码里面没有请抓取我!这段文字。难道这个网页是异步加载?我们现在来看一下网页的请求:
  
  网页也没有发起任何的Ajax 请求。那么,这段文字是从哪里来的?
  我们来看一下这个网页对应的 HTML:
  
  整个 HTML 里面,甚至连 JavaScript 都没有。那么这段文字是哪里来的呢?
  有点经验的同学,可能会想到看一下这个example.css文件,其内容如下:
  
  没错,文字确实在这里面。其中::after,我们称之为伪元素(Pseudo-element)[1]。
  对于伪元素里面的文字,应该如何提取呢?当然,你可以使用正则表达式来提取。不过我们今天不准备讲这个。
  XPath 没有办法提取伪元素,因为 XPath 只能提取 Dom 树中的内容,但是伪元素是不属于 Dom 树的,因此无法提取。要提取伪元素,需要使用 CSS 选择器。
  由于网页的 HTML 与 CSS 是分开的。如果我们使用 requests 或者 Scrapy,只能单独拿到 HTML 和 CSS。单独拿到 HTML 没有任何作用,因为数据根本不在里面。单独拿到 CSS,虽然有数据,但如果不用正则表达式的话,里面的数据拿不出来。所以 BeautifulSoup4的 CSS 选择器也没有什么作用。所以我们需要把 CSS 和 HTML 放到一起来渲染,然后再使用JavaScript 的 CSS 选择器找到需要提取的内容。
  首先我们来看一下,为了提取这个伪元素的值,我们需要下面这段Js 代码:
  window.getComputedStyle(document.querySelector('.fake_element'),':after').getPropertyValue('content')<br />
  其中,ducument.querySelector的第一个参数.fake_element就表示值为fake_element的 class 属性。第二个参数就是伪元素:after。运行效果如下图所示:
  
  为了能够运行这段 JavaScript,我们需要使用模拟浏览器,无论是 Selenium 还是 Puppeteer 都可以。这里以 Selenium 为例。
  在 Selenium 要执行 Js,需要使用driver.execute_script()方法,代码如下:
  
  提取出来的内容最外层会包上一对双引号,拿到以后移除外侧的双引号,就是我们在网页上看到的内容了。
  参考资料[1]
  伪元素(Pseudo-element):
   查看全部

  一日一技:爬虫如何正确从网页中提取伪元素?
  
  摄影:产品经理家里做点简单菜
  我们来看一个网页,大家想想使用 XPath 怎么抓取。
  
  可以看到,在源代码里面没有请抓取我!这段文字。难道这个网页是异步加载?我们现在来看一下网页的请求:
  
  网页也没有发起任何的Ajax 请求。那么,这段文字是从哪里来的?
  我们来看一下这个网页对应的 HTML:
  
  整个 HTML 里面,甚至连 JavaScript 都没有。那么这段文字是哪里来的呢?
  有点经验的同学,可能会想到看一下这个example.css文件,其内容如下:
  
  没错,文字确实在这里面。其中::after,我们称之为伪元素(Pseudo-element)[1]。
  对于伪元素里面的文字,应该如何提取呢?当然,你可以使用正则表达式来提取。不过我们今天不准备讲这个。
  XPath 没有办法提取伪元素,因为 XPath 只能提取 Dom 树中的内容,但是伪元素是不属于 Dom 树的,因此无法提取。要提取伪元素,需要使用 CSS 选择器。
  由于网页的 HTML 与 CSS 是分开的。如果我们使用 requests 或者 Scrapy,只能单独拿到 HTML 和 CSS。单独拿到 HTML 没有任何作用,因为数据根本不在里面。单独拿到 CSS,虽然有数据,但如果不用正则表达式的话,里面的数据拿不出来。所以 BeautifulSoup4的 CSS 选择器也没有什么作用。所以我们需要把 CSS 和 HTML 放到一起来渲染,然后再使用JavaScript 的 CSS 选择器找到需要提取的内容。
  首先我们来看一下,为了提取这个伪元素的值,我们需要下面这段Js 代码:
  window.getComputedStyle(document.querySelector('.fake_element'),':after').getPropertyValue('content')<br />
  其中,ducument.querySelector的第一个参数.fake_element就表示值为fake_element的 class 属性。第二个参数就是伪元素:after。运行效果如下图所示:
  
  为了能够运行这段 JavaScript,我们需要使用模拟浏览器,无论是 Selenium 还是 Puppeteer 都可以。这里以 Selenium 为例。
  在 Selenium 要执行 Js,需要使用driver.execute_script()方法,代码如下:
  
  提取出来的内容最外层会包上一对双引号,拿到以后移除外侧的双引号,就是我们在网页上看到的内容了。
  参考资料[1]
  伪元素(Pseudo-element):
  

js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?

网站优化优采云 发表了文章 • 0 个评论 • 56 次浏览 • 2022-05-05 20:06 • 来自相关话题

  js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?
  Web 世界有一个至理名言,就是 Java 提出的“Write once, run everywhere”。但这句话只适用于 Java 么?我们能否也用它来形容 JavaScript 呢?答案是 Yes。
  我将会在这篇文章中介绍同构 JavaScript 应用的概念,并推荐一些资源帮助你构建此类应用。
  一路走来
  多年以前,web 只是一些由 HTML 和 CSS 搭建的静态页面,没有太多的交互。用户的每一个动作都需要服务器来创建并返回一个完整的页面。幸而有了 JavaScript,开发者开始创建很棒的效果,不过 Ajax 的到来才是这场革新的真正开始。Web 开发者开始编写能够与服务端进行交互,且在不重载页面的情况下向服务端发送并接受数据的页面。
  随着时间的推移,客户端代码可以做的事情越来越多,催生了被称作单页面应用(SPA)的一类应用。SPA 在首次加载页面时就获取了所有必需的资源,或者再按需动态加载并且渲染到页面上。 Gmail 和 StackEdit editor 是很棒的 SPA 示例。
  SPA 准许重度的交互设计,因为几乎所有的操作都在客户端执行,保持最低限度地与服务端进行交流。不幸的是,它们也存在一些严重的问题,我们选择几个进行讨论。
  性能
  因为相对于静态页面,SPA 需要更多的客户端代码,需要下载数据的体积也更大。这使得手机加载速度很慢,可能会导致一些极端的状况 —— 比如糟糕的用户体验以及收入上的损失等。依据 Microsoft 的一篇文章 ——
  Bing 的一项研究表明:页面的加载时间每增加 10ms,站点年度总收入就会减少 $250K。
  SEO
  因为单页面应用依赖于 JavaScript 的执行,服务器不会提供它们可能用到的任何 HTML 内容。因此,web 爬虫很难去索引到这些页面。爬虫就是可以向 web 服务器发送请求,并且将结果分析成原始文本的程序,而不需要像一个浏览器运行 JavaScript 那样解释和执行客户端的内容。不久前,Google 优化了搜索引擎的 web 爬虫,现在它也可以抓取基于客户端 JavaScript 所构建的页面了。但是 Bing、Yahoo 以及其他搜索引擎怎么办?一个好的索引对任何公司来说都至关重要,它通常会带来更多的流量以及更高的回报。
  同构 JavaScript 应用
  同构 JavaScript 应用基于 JavaScript 编写,可以在客户端和服务端运行。正因为此,你只需要写一次代码,就可以在服务端渲染静态页面,还可以在客户端完成复杂的交互。所以,这种方式互通了两个世界,并且避免了前面提到了两个问题。
  现在,有很多框架可以帮助你开发这类应用。其中最著名的一个可能是 Meteor。Meter 是一个开源 JavaScript 框架,基于 Node.js 编写,专注于实时 web 应用。我想提到的另一个项目是 Rendr,它是 Airbnb 开发的一款轻量级类库,准许同时在客户端和服务端运行 Backbone.js。
  越来越多的公司将 Node.js 应用到他们的产品中。客户端和服务端的代码共享成为一个更加普通而自然的选择。在我看来,这种做法将是 web 开发的未来。有些类库通过共享模板又增强了这一趋势,比如 React。
  结论
  这篇文章介绍了同构 JavaScript 应用的概念,它是应用开发的一种全新方式,可以最大限度地结合服务端和客户端应用程序。我们还讨论了运用这种方式尝试解决的问题,以及你现在就可以参与实践的一些项目。
  你听说过同构 JavaScript 应用么?你开发过么?你有开发经验么?
  原文:Isomorphic JavaScript Applications — the Future of the Web? 查看全部

  js抓取网页内容 同构 JavaScript 应用 —— Web 世界的未来?
  Web 世界有一个至理名言,就是 Java 提出的“Write once, run everywhere”。但这句话只适用于 Java 么?我们能否也用它来形容 JavaScript 呢?答案是 Yes。
  我将会在这篇文章中介绍同构 JavaScript 应用的概念,并推荐一些资源帮助你构建此类应用。
  一路走来
  多年以前,web 只是一些由 HTML 和 CSS 搭建的静态页面,没有太多的交互。用户的每一个动作都需要服务器来创建并返回一个完整的页面。幸而有了 JavaScript,开发者开始创建很棒的效果,不过 Ajax 的到来才是这场革新的真正开始。Web 开发者开始编写能够与服务端进行交互,且在不重载页面的情况下向服务端发送并接受数据的页面。
  随着时间的推移,客户端代码可以做的事情越来越多,催生了被称作单页面应用(SPA)的一类应用。SPA 在首次加载页面时就获取了所有必需的资源,或者再按需动态加载并且渲染到页面上。 Gmail 和 StackEdit editor 是很棒的 SPA 示例。
  SPA 准许重度的交互设计,因为几乎所有的操作都在客户端执行,保持最低限度地与服务端进行交流。不幸的是,它们也存在一些严重的问题,我们选择几个进行讨论。
  性能
  因为相对于静态页面,SPA 需要更多的客户端代码,需要下载数据的体积也更大。这使得手机加载速度很慢,可能会导致一些极端的状况 —— 比如糟糕的用户体验以及收入上的损失等。依据 Microsoft 的一篇文章 ——
  Bing 的一项研究表明:页面的加载时间每增加 10ms,站点年度总收入就会减少 $250K。
  SEO
  因为单页面应用依赖于 JavaScript 的执行,服务器不会提供它们可能用到的任何 HTML 内容。因此,web 爬虫很难去索引到这些页面。爬虫就是可以向 web 服务器发送请求,并且将结果分析成原始文本的程序,而不需要像一个浏览器运行 JavaScript 那样解释和执行客户端的内容。不久前,Google 优化了搜索引擎的 web 爬虫,现在它也可以抓取基于客户端 JavaScript 所构建的页面了。但是 Bing、Yahoo 以及其他搜索引擎怎么办?一个好的索引对任何公司来说都至关重要,它通常会带来更多的流量以及更高的回报。
  同构 JavaScript 应用
  同构 JavaScript 应用基于 JavaScript 编写,可以在客户端和服务端运行。正因为此,你只需要写一次代码,就可以在服务端渲染静态页面,还可以在客户端完成复杂的交互。所以,这种方式互通了两个世界,并且避免了前面提到了两个问题。
  现在,有很多框架可以帮助你开发这类应用。其中最著名的一个可能是 Meteor。Meter 是一个开源 JavaScript 框架,基于 Node.js 编写,专注于实时 web 应用。我想提到的另一个项目是 Rendr,它是 Airbnb 开发的一款轻量级类库,准许同时在客户端和服务端运行 Backbone.js。
  越来越多的公司将 Node.js 应用到他们的产品中。客户端和服务端的代码共享成为一个更加普通而自然的选择。在我看来,这种做法将是 web 开发的未来。有些类库通过共享模板又增强了这一趋势,比如 React。
  结论
  这篇文章介绍了同构 JavaScript 应用的概念,它是应用开发的一种全新方式,可以最大限度地结合服务端和客户端应用程序。我们还讨论了运用这种方式尝试解决的问题,以及你现在就可以参与实践的一些项目。
  你听说过同构 JavaScript 应用么?你开发过么?你有开发经验么?
  原文:Isomorphic JavaScript Applications — the Future of the Web?

从零开始掌握微服务软件测试-端到端测试的优化策略

网站优化优采云 发表了文章 • 0 个评论 • 67 次浏览 • 2022-05-02 18:18 • 来自相关话题

  从零开始掌握微服务软件测试-端到端测试的优化策略
  上篇文章中的契约测试解决了我们对微服务之间协作、交互的验证需求。本系列到目前为止介绍的测试都是后端或者 API 级别的测试,可以说都属于“白盒测试”。自动化测试的最后一步,就是所谓的端到端测试(End-to-End Test),又称黑盒测试,即从用户角度验证整个系统的功能,看其从启动到结束是否全部符合用户预期。
  黑盒测试:又被称为功能测试、数据驱动测试或基于规格说明的测试,是通过使用整个软件或某种软件功能来严格地测试, 而并没有通过检查程序的源代码或者很清楚地了解该软件的源代码程序具体是怎样设计的。测试人员通过输入他们的数据然后看输出的结果从而了解软件怎样工作。简单来说,它的测试视角是从最终用户出发,对系统的底层实现一无所知。
  本文首先将讲解端到端测试的主要方法,包括配置步骤和测试用例的编写等。但是正如很多读者经常遇到的,UI 测试常常是非常脆弱、不稳定的,往往会因为一点点 UI 的变化而失败。为了确保端到端测试起到既能弥补其他测试的不足,又不会经常导致误报的作用,本文还将着重分析一些优化端到端策略的方法。
  端到端测试的实施方法
  UI 测试的框架和工具目前有很多。本文将着重以网页端的端到端测试为例。按照 GitHub 上的 Star(点赞)数目排名,目前最靠前的五个端到端测试框架为:
  本文将选用 AngularJS 团队所发布的 E2E 测试框架 Protractor,过程如下图所示:
  
  实施步骤主要分为以下几步:
  编写配置文件和基于 Jasmine/Mocha/Cucumber 的测试用例;
  使用 Protractor 作为执行框架;
  调用 Selenium Server/chrome Driver,启动浏览器进程;
  从浏览器执行测试用例,检查 AngularJS 应用程序的结果是否符合预期。
  下面将逐步加以介绍。
  Protractor 简介
  Protractor 是 AngularJS 团队发布的一款开源的端到端网页测试工具,可以说是专门为 Angular 定制,内置了各种可以选择、操作 Angular 元素的便捷方法。如果基于 Angular 开发,使用它可以减少很多重复代码。
  Protractor 的主要特点有:
  Jamine 是一个由行为驱动的 JavaScript 代码测试框架,不依赖于任何其他 JavaScript 框架,也不需要使用 DOM。它的语法非常简单、清晰,非常便于撰写测试用例。一个典型的 Jammine 测试用例如下:
  
  其主要功能有:
  环境安装主要有以下几步:
  npminstallprotractor -g
  webdriver-managerupdate// 浏览器驱动
  webdriver-managerstart
  默认情况下,Selenium 测试服务器接入地址为::4444/wd/hub。
  npminstall protractor-jasmine2-html-reporter -g
  npminstall jasmine-reporters -g
  由于需要在 config 文件中加载。一般把这两个插件放在根目录的 node_modules 目录下
  配置文件
  配置文件位于根目录下,默认命名为 protractor.config.js,举例如下:
  
  编写测试用例
  测试用例的作用主要是:
  查找页面元素
  首先,介绍针对浏览器的常用操作:
  
  其次是定位页面元素,Pratractor 支持用 by.binding 定位元素,又称为定位器 locator。Protractor 中常用的定位器有如下几种:
  “class” 是 DOM 元素上的一个属性。在实践中,通常是多个 DOM 元素有同样的 class 名,所以通常用它来查找多个元素。
  HTML 代码如下:
  
  测试用例如下:
  
  根据元素标签名查找。
  HTML 代码如下:
  
  测试用例如下:
  
  查找 name 属性匹配的表单元素。
  HTML 代码如下:
  
  测试用例如下:
  
  查找链接文字匹配的链接元素。
  HTML 代码如下:
  
  测试用例如下:
  
  查找链接文字部分匹配的链接元素。
  HTML 代码如下:
  
  测试用例如下:
  
  正如名字所表明的,它通过 CSS 来定位元素。默认使用浏览器本地支持的选择器,可参考 W3C 的 CSS 选择器。如果浏览器默认不支持 CSS 查询,则使用 Sizzle。IE6、7 和 Firefox 3.0 都使用了 Sizzle。注意使用 CSS 选择器不能保证在所有浏览器里都表现一样,有些在某些浏览器里工作良好,在另一些浏览器里可能无法工作。
  HTML 代码如下:
  
  测试代码如下:
  更多定位器请见参考资料。
  这是最高效也是首选的方法用于查找一个元素。UI 开发人员常犯的错误是,要么没有指定 id,要么自动生成随机 id,这两种情况都应避免。即使是使用 class 也比使用自动生成随机 id 要好的多。
  操作定位到的页面元素
  Protractor 中使用 element(locator) 和 element.all(locator) 来定位元素,前者是定位单个元素,后者是定位所有符合条件的元素。第一个方法如果找到则返回该元素,如果没找到则抛出异常。第二种如果找到则返回一个包含所有元素的列表,如果没找到则返回一个空数组。
  定位到元素后能做哪些操作?常用操作举例如下:
  
  关于 sendkeys 的使用,注意还可以支持下列键盘操作:
  操作效果
  sendKeys(protractor.Key.CONTROL, 'a')
  全选
  sendKeys(protractor.Key.CONTROL, 'c')
  复制
  sendKeys(protractor.Key.CONTROL, 'v')
  粘贴
  sendKeys(protractor.Key.CONTROL, 'x')
  剪切
  下面,我们就可以编写一个实际的测试用例了。下面假设有一个本地的 Web 服务器,打开浏览器之后登录,然后验证一些特定信息是否符合预期,保存为 tc/e2e/scan.js。
  
  执行 Protractor
  
  调试技巧
  
  
  优化策略
  虽然端到端测试可以彻底检查整个系统是否符合用户预期,但是很多人都会感觉到,这样的测试很容易失败,因为即使前端有一些微小的改动或者调整,都会导致很多测试用例的失效。因此,总结下面这几点优化策略:
  下面是一个 Page Object 的例子:
  
  然后在主测试用例文件中,用下面的方式调用:
  
  
  那么,如果只运行跟主页有关的测试,只需要执行:
  
  总结
  本文介绍了端到端测试的主要方法和优化策略,让您可以快速地开始对前端程序进行自动化黑盒测试。
  主要方法有:
  优化策略有:
  到目前为止,我们已经覆盖了“自动化测试金字塔”的大部分内容。下一篇,我们将会介绍目前测试领域的两个新热点:云端测试和性能测试。 查看全部

  从零开始掌握微服务软件测试-端到端测试的优化策略
  上篇文章中的契约测试解决了我们对微服务之间协作、交互的验证需求。本系列到目前为止介绍的测试都是后端或者 API 级别的测试,可以说都属于“白盒测试”。自动化测试的最后一步,就是所谓的端到端测试(End-to-End Test),又称黑盒测试,即从用户角度验证整个系统的功能,看其从启动到结束是否全部符合用户预期。
  黑盒测试:又被称为功能测试、数据驱动测试或基于规格说明的测试,是通过使用整个软件或某种软件功能来严格地测试, 而并没有通过检查程序的源代码或者很清楚地了解该软件的源代码程序具体是怎样设计的。测试人员通过输入他们的数据然后看输出的结果从而了解软件怎样工作。简单来说,它的测试视角是从最终用户出发,对系统的底层实现一无所知。
  本文首先将讲解端到端测试的主要方法,包括配置步骤和测试用例的编写等。但是正如很多读者经常遇到的,UI 测试常常是非常脆弱、不稳定的,往往会因为一点点 UI 的变化而失败。为了确保端到端测试起到既能弥补其他测试的不足,又不会经常导致误报的作用,本文还将着重分析一些优化端到端策略的方法。
  端到端测试的实施方法
  UI 测试的框架和工具目前有很多。本文将着重以网页端的端到端测试为例。按照 GitHub 上的 Star(点赞)数目排名,目前最靠前的五个端到端测试框架为:
  本文将选用 AngularJS 团队所发布的 E2E 测试框架 Protractor,过程如下图所示:
  
  实施步骤主要分为以下几步:
  编写配置文件和基于 Jasmine/Mocha/Cucumber 的测试用例;
  使用 Protractor 作为执行框架;
  调用 Selenium Server/chrome Driver,启动浏览器进程;
  从浏览器执行测试用例,检查 AngularJS 应用程序的结果是否符合预期。
  下面将逐步加以介绍。
  Protractor 简介
  Protractor 是 AngularJS 团队发布的一款开源的端到端网页测试工具,可以说是专门为 Angular 定制,内置了各种可以选择、操作 Angular 元素的便捷方法。如果基于 Angular 开发,使用它可以减少很多重复代码。
  Protractor 的主要特点有:
  Jamine 是一个由行为驱动的 JavaScript 代码测试框架,不依赖于任何其他 JavaScript 框架,也不需要使用 DOM。它的语法非常简单、清晰,非常便于撰写测试用例。一个典型的 Jammine 测试用例如下:
  
  其主要功能有:
  环境安装主要有以下几步:
  npminstallprotractor -g
  webdriver-managerupdate// 浏览器驱动
  webdriver-managerstart
  默认情况下,Selenium 测试服务器接入地址为::4444/wd/hub。
  npminstall protractor-jasmine2-html-reporter -g
  npminstall jasmine-reporters -g
  由于需要在 config 文件中加载。一般把这两个插件放在根目录的 node_modules 目录下
  配置文件
  配置文件位于根目录下,默认命名为 protractor.config.js,举例如下:
  
  编写测试用例
  测试用例的作用主要是:
  查找页面元素
  首先,介绍针对浏览器的常用操作:
  
  其次是定位页面元素,Pratractor 支持用 by.binding 定位元素,又称为定位器 locator。Protractor 中常用的定位器有如下几种:
  “class” 是 DOM 元素上的一个属性。在实践中,通常是多个 DOM 元素有同样的 class 名,所以通常用它来查找多个元素。
  HTML 代码如下:
  
  测试用例如下:
  
  根据元素标签名查找。
  HTML 代码如下:
  
  测试用例如下:
  
  查找 name 属性匹配的表单元素。
  HTML 代码如下:
  
  测试用例如下:
  
  查找链接文字匹配的链接元素。
  HTML 代码如下:
  
  测试用例如下:
  
  查找链接文字部分匹配的链接元素。
  HTML 代码如下:
  
  测试用例如下:
  
  正如名字所表明的,它通过 CSS 来定位元素。默认使用浏览器本地支持的选择器,可参考 W3C 的 CSS 选择器。如果浏览器默认不支持 CSS 查询,则使用 Sizzle。IE6、7 和 Firefox 3.0 都使用了 Sizzle。注意使用 CSS 选择器不能保证在所有浏览器里都表现一样,有些在某些浏览器里工作良好,在另一些浏览器里可能无法工作。
  HTML 代码如下:
  
  测试代码如下:
  更多定位器请见参考资料。
  这是最高效也是首选的方法用于查找一个元素。UI 开发人员常犯的错误是,要么没有指定 id,要么自动生成随机 id,这两种情况都应避免。即使是使用 class 也比使用自动生成随机 id 要好的多。
  操作定位到的页面元素
  Protractor 中使用 element(locator) 和 element.all(locator) 来定位元素,前者是定位单个元素,后者是定位所有符合条件的元素。第一个方法如果找到则返回该元素,如果没找到则抛出异常。第二种如果找到则返回一个包含所有元素的列表,如果没找到则返回一个空数组。
  定位到元素后能做哪些操作?常用操作举例如下:
  
  关于 sendkeys 的使用,注意还可以支持下列键盘操作:
  操作效果
  sendKeys(protractor.Key.CONTROL, 'a')
  全选
  sendKeys(protractor.Key.CONTROL, 'c')
  复制
  sendKeys(protractor.Key.CONTROL, 'v')
  粘贴
  sendKeys(protractor.Key.CONTROL, 'x')
  剪切
  下面,我们就可以编写一个实际的测试用例了。下面假设有一个本地的 Web 服务器,打开浏览器之后登录,然后验证一些特定信息是否符合预期,保存为 tc/e2e/scan.js。
  
  执行 Protractor
  
  调试技巧
  
  
  优化策略
  虽然端到端测试可以彻底检查整个系统是否符合用户预期,但是很多人都会感觉到,这样的测试很容易失败,因为即使前端有一些微小的改动或者调整,都会导致很多测试用例的失效。因此,总结下面这几点优化策略:
  下面是一个 Page Object 的例子:
  
  然后在主测试用例文件中,用下面的方式调用:
  
  
  那么,如果只运行跟主页有关的测试,只需要执行:
  
  总结
  本文介绍了端到端测试的主要方法和优化策略,让您可以快速地开始对前端程序进行自动化黑盒测试。
  主要方法有:
  优化策略有:
  到目前为止,我们已经覆盖了“自动化测试金字塔”的大部分内容。下一篇,我们将会介绍目前测试领域的两个新热点:云端测试和性能测试。

百度竞价排名那些事

网站优化优采云 发表了文章 • 0 个评论 • 45 次浏览 • 2022-05-01 15:14 • 来自相关话题

  百度竞价排名那些事
  百度竞价排名
  问题:对于某些核心关键词,在百度上搜索,通常前几名都是百度推广竞价广告,官网自然排名第一却排在后面。
  解决:对于有商标的关键词,可以联系百度申请品牌保护,这样竞争对手就无法投放这个关键词,自然排名就会上去了。对于无法进行品牌保护的关键词,只好也投放百度竞价,提高关键词和目标网址的关联度,以期待使用较低的金额获得较多的点击量。
  综上所述,针对这个网站存在的问题,建议采取以下几个优化步骤:
  第一步:进行网站内部优化,杜绝死链接,加强网站内部链接建设,(内部链接也是反连接,反连接即入站链接,对网站的排名有决定性作用!)。
  第二步:修改后的网站链接及地图重新向搜索引擎提交,向分类目录提交网站。
  第三步:内容建设,主站增加内容更新频度,多对外发布高质量原创文章,并将更新的内容通过新浪微博、新浪博客等外部平台发布,带回反向链接。
  第四步:国内优化需要加强百度产品建设,在百度知道、百度文库、百度经验等百度类网站提交主站信息,或者通过购买高权重百度外链来增加百度权重,来宣传网站、产品和服务。
  第五步:采用竞价排名和SEO优化相结合,为了要让网站更容易被搜索引擎接受合的策略、SMO和SEO相结合的策略,多管齐下,重质量和数量,全面提高网站的权重。
  因为该网站为企业自己的开发人员进行开发,因此需要针对网页开发人员指定一个网页开发规范,下面是专门针对该企业的SEO网页设计规范。
  
  企业网页设计规范
  1.页面:为每个网页添加合适的标题,如果是网站首页,则标题建议使用站点名称或者站点代表的公司、机构名称;其余的内容页面,标题建议做成与正文内容的提炼和概括。标题使用倒序,格式为“页面标题_栏目标题_网站名称”。标题中应当包含该页面最重要的目标关键词。每个页面的标题应该各不相同。
  2.标签:充分利用网站首页或者频道首页的 description 标签,提供此网页内容的概括说明,形式为.内容页面不添加description 标签和 keyword 标签。
  3.导航:确保网站导航都是以html的形式链接。网站应该有明晰的导航和层次结构,网站上重要的网页,应该能从网站比较浅层的位置找到,确保每个页面都可以通过至少一个文本链接到达。站内的页面都要有链接至首页,链接结构为:首页-内页-首页,相关联的网页内容要做互链,如文章下方的“相关文章”功能。所有页面之间应该有广泛的互联,如果无法实现这一点,可以考虑建立一个网站地图。如果站点地图上的链接超过 100 个,则需要将站点地图拆分为多个网页。
  4.链接:使用文字而不是flash、Javascript等来显示重要的内容或链接。当链接到相关内容时,请使用能确切描述该内容的文字。比如,当你为浏览者提供更多Photoshop信息的链接时,使用诸如“关于Photoshop的更多信息”的描述,而不只是“更多信息”。
  5.图片:尽量使用文字而不是图片来显示重要的名称、内容或链接。如果必须对文字性内容使用图片,使用“ALT”属性来加入一些描述性的文字。网站上重要的图片,如:logo,照片,导航图片等,都需要使用“ALT”加上描述。
  
  6.改版:网站改版或者网站内重要页面链接发生变动时,应该将改版前的页面301永久重定向到改版后的页面。网站更换域名,应该将旧域名的所有页面301永久重定向到新域名上对应的页面。
  7.框架:不要使用frame和iframe框架结构。
  8.URL:尽量使用简单的URL地址,如果网站采用动态网页,尽量减少参数的数量和控制参数的长度。
  9.CSS/JS:样式表尽量放在页面的顶部,脚本尽量放在页面的底部,尽量使用外部的CSS和JavaScript文件。
  10.其他:利用网络服务器上的 robots.txt 文件。告诉抓取工具哪些目录可以抓取,哪些目录不可抓取。创建一个sitemap.xml文件并提交到Google Webmaster和百度站长平台。
  云浪网络推广,一直以低成本、有效果为各大企业及广告营销策划公司提供网络推广服务多年,擅长利用百度营销软文首页推广、百度爱采购,百度竞价前三推广(1500一个月,三个月2800,包点击费),官网推广至百度搜索关键词首页有排名为目标。
  【百度快照、百度竞价,百度爱采购、360竞价、、信息流开户,抖音短视频,全网推广咨询:度晓晓】
  
  ‍ 查看全部

  百度竞价排名那些事
  百度竞价排名
  问题:对于某些核心关键词,在百度上搜索,通常前几名都是百度推广竞价广告,官网自然排名第一却排在后面。
  解决:对于有商标的关键词,可以联系百度申请品牌保护,这样竞争对手就无法投放这个关键词,自然排名就会上去了。对于无法进行品牌保护的关键词,只好也投放百度竞价,提高关键词和目标网址的关联度,以期待使用较低的金额获得较多的点击量。
  综上所述,针对这个网站存在的问题,建议采取以下几个优化步骤:
  第一步:进行网站内部优化,杜绝死链接,加强网站内部链接建设,(内部链接也是反连接,反连接即入站链接,对网站的排名有决定性作用!)。
  第二步:修改后的网站链接及地图重新向搜索引擎提交,向分类目录提交网站。
  第三步:内容建设,主站增加内容更新频度,多对外发布高质量原创文章,并将更新的内容通过新浪微博、新浪博客等外部平台发布,带回反向链接。
  第四步:国内优化需要加强百度产品建设,在百度知道、百度文库、百度经验等百度类网站提交主站信息,或者通过购买高权重百度外链来增加百度权重,来宣传网站、产品和服务。
  第五步:采用竞价排名和SEO优化相结合,为了要让网站更容易被搜索引擎接受合的策略、SMO和SEO相结合的策略,多管齐下,重质量和数量,全面提高网站的权重。
  因为该网站为企业自己的开发人员进行开发,因此需要针对网页开发人员指定一个网页开发规范,下面是专门针对该企业的SEO网页设计规范。
  
  企业网页设计规范
  1.页面:为每个网页添加合适的标题,如果是网站首页,则标题建议使用站点名称或者站点代表的公司、机构名称;其余的内容页面,标题建议做成与正文内容的提炼和概括。标题使用倒序,格式为“页面标题_栏目标题_网站名称”。标题中应当包含该页面最重要的目标关键词。每个页面的标题应该各不相同。
  2.标签:充分利用网站首页或者频道首页的 description 标签,提供此网页内容的概括说明,形式为.内容页面不添加description 标签和 keyword 标签。
  3.导航:确保网站导航都是以html的形式链接。网站应该有明晰的导航和层次结构,网站上重要的网页,应该能从网站比较浅层的位置找到,确保每个页面都可以通过至少一个文本链接到达。站内的页面都要有链接至首页,链接结构为:首页-内页-首页,相关联的网页内容要做互链,如文章下方的“相关文章”功能。所有页面之间应该有广泛的互联,如果无法实现这一点,可以考虑建立一个网站地图。如果站点地图上的链接超过 100 个,则需要将站点地图拆分为多个网页。
  4.链接:使用文字而不是flash、Javascript等来显示重要的内容或链接。当链接到相关内容时,请使用能确切描述该内容的文字。比如,当你为浏览者提供更多Photoshop信息的链接时,使用诸如“关于Photoshop的更多信息”的描述,而不只是“更多信息”。
  5.图片:尽量使用文字而不是图片来显示重要的名称、内容或链接。如果必须对文字性内容使用图片,使用“ALT”属性来加入一些描述性的文字。网站上重要的图片,如:logo,照片,导航图片等,都需要使用“ALT”加上描述。
  
  6.改版:网站改版或者网站内重要页面链接发生变动时,应该将改版前的页面301永久重定向到改版后的页面。网站更换域名,应该将旧域名的所有页面301永久重定向到新域名上对应的页面。
  7.框架:不要使用frame和iframe框架结构。
  8.URL:尽量使用简单的URL地址,如果网站采用动态网页,尽量减少参数的数量和控制参数的长度。
  9.CSS/JS:样式表尽量放在页面的顶部,脚本尽量放在页面的底部,尽量使用外部的CSS和JavaScript文件。
  10.其他:利用网络服务器上的 robots.txt 文件。告诉抓取工具哪些目录可以抓取,哪些目录不可抓取。创建一个sitemap.xml文件并提交到Google Webmaster和百度站长平台。
  云浪网络推广,一直以低成本、有效果为各大企业及广告营销策划公司提供网络推广服务多年,擅长利用百度营销软文首页推广、百度爱采购,百度竞价前三推广(1500一个月,三个月2800,包点击费),官网推广至百度搜索关键词首页有排名为目标。
  【百度快照、百度竞价,百度爱采购、360竞价、、信息流开户,抖音短视频,全网推广咨询:度晓晓】
  
  ‍

做网站-做网站公司-专业做网站-做网站价格多少钱

网站优化优采云 发表了文章 • 0 个评论 • 57 次浏览 • 2022-04-30 01:01 • 来自相关话题

  做网站-做网站公司-专业做网站-做网站价格多少钱
  做网站-做网站公司-专业做网站-做网站价格多少钱-誉网科技-欢迎免费咨询(微信同号)
  
  
  
  网站建设需要遵循的制作原则有哪些
  网站建设对于企业来说所起到的作用是相当重要的,在如今这个互联网时代,企业通过网站建设可以更加有利于企业的长远发展。通常来说在建网站之前必要要了解建站目的,对企业的未来发展做好策划、对网站栏目做好规划,还要对网站的色彩搭配,联系方式的更好展现等要做相关的工作,只有这样才能更好的达到网站建设的最终目的。在以上工作做好相关的调查了解和规划后,就可以对网站进行架构和设计开发了,那么在网站建设需要遵循的制作原则有哪些
  一.使用成熟的开发制作技术
  最新的技术也许并不适合企业的网站制作,使用开发人员最熟悉的技术往往会更好,如果使用开发人员不熟悉的技术,边学边写,写的不好不说,在开发上往往会浪费很多的开发时间,因此选择合适的网站开发技术最好。
  二.做好网站结构的布局
  网站的架构不一定设计得很复杂,在网站布局一定要做到层次清晰,业务分明。在布局时候要多考虑网站的优化推广,具体来说在以下几方面中体现:
  1、建立网站地图
  最好给网站建一个完整的网站地图sitemap。同时把网站地图的链接放在首页上,使搜索引擎能很方便的发现和抓取所有网页信息;
  2、网站的内页与首页的关系尤其需要注意,即每个网页最多距离首页四次点击就能到达;
  3、网站的导航最好使用文字链接,避免使用图片或者js;
  4、网站导航中的链接文字应该准确描述栏目的内容;
  5、整站的PR传递和流动,每个分页的权重都传递给首页;
  6、网页的互相链接,即内链;
  三.网站的功能在细节上要做好
  细节可以决定成败,在做网站的过程中把网站的功能做细些,做完善,可以带给用户更好的体验。譬如把网站设计得美观些,可以给人眼前一亮的感觉,也就更加容易吸引到用户。在网站的主题选择上,健康与自然结合的主题界面可以快速获取用户的认可。在建站的色彩选择上,颜色的搭配尽量不要挑选一些刺眼的颜色做网站界面的背景色,这样会影响到用户的审美疲劳以及部分用户的视觉冲击。再者建网站菜单栏的设置,要挑选重点栏目已经要设计得比较突出,容易操作。再次面包屑设置方面,一般的面包屑中每个父级导航都必须加上超链接指向相关页面,这样不会让用户每次返回都要点浏览器的返回按钮或者是菜单导航。最后返回按钮,每个页面都应该有一个返回顶部浮动按钮。建立一个对用户展现友好的界面结构让网站更容易获取用户的好感,对于粘住用户帮助是大大的。
  四.做好网站的相关统计功能
  网站的统计功能包括日志分析统计,性能分析统计,用户分析统计等。做好相关的统计分析,更加有利于后期的网站运维和优化工作。
  五、提升网站的速度
  随着移动端的发展流量入口也越来越偏向移动,如果企业网站的打开速度慢会增加用户等待时间,这样就会造成用户的不好印象,还会影响搜索排名。因此在网站建设过程中,可以通过各种优化技术提升网站的访问速度。
  
  做网站-做网站公司-专业做网站-做网站价格多少钱-誉网科技-欢迎免费咨询(微信同号) 查看全部

  做网站-做网站公司-专业做网站-做网站价格多少钱
  做网站-做网站公司-专业做网站-做网站价格多少钱-誉网科技-欢迎免费咨询(微信同号)
  
  
  
  网站建设需要遵循的制作原则有哪些
  网站建设对于企业来说所起到的作用是相当重要的,在如今这个互联网时代,企业通过网站建设可以更加有利于企业的长远发展。通常来说在建网站之前必要要了解建站目的,对企业的未来发展做好策划、对网站栏目做好规划,还要对网站的色彩搭配,联系方式的更好展现等要做相关的工作,只有这样才能更好的达到网站建设的最终目的。在以上工作做好相关的调查了解和规划后,就可以对网站进行架构和设计开发了,那么在网站建设需要遵循的制作原则有哪些
  一.使用成熟的开发制作技术
  最新的技术也许并不适合企业的网站制作,使用开发人员最熟悉的技术往往会更好,如果使用开发人员不熟悉的技术,边学边写,写的不好不说,在开发上往往会浪费很多的开发时间,因此选择合适的网站开发技术最好。
  二.做好网站结构的布局
  网站的架构不一定设计得很复杂,在网站布局一定要做到层次清晰,业务分明。在布局时候要多考虑网站的优化推广,具体来说在以下几方面中体现:
  1、建立网站地图
  最好给网站建一个完整的网站地图sitemap。同时把网站地图的链接放在首页上,使搜索引擎能很方便的发现和抓取所有网页信息;
  2、网站的内页与首页的关系尤其需要注意,即每个网页最多距离首页四次点击就能到达;
  3、网站的导航最好使用文字链接,避免使用图片或者js;
  4、网站导航中的链接文字应该准确描述栏目的内容;
  5、整站的PR传递和流动,每个分页的权重都传递给首页;
  6、网页的互相链接,即内链;
  三.网站的功能在细节上要做好
  细节可以决定成败,在做网站的过程中把网站的功能做细些,做完善,可以带给用户更好的体验。譬如把网站设计得美观些,可以给人眼前一亮的感觉,也就更加容易吸引到用户。在网站的主题选择上,健康与自然结合的主题界面可以快速获取用户的认可。在建站的色彩选择上,颜色的搭配尽量不要挑选一些刺眼的颜色做网站界面的背景色,这样会影响到用户的审美疲劳以及部分用户的视觉冲击。再者建网站菜单栏的设置,要挑选重点栏目已经要设计得比较突出,容易操作。再次面包屑设置方面,一般的面包屑中每个父级导航都必须加上超链接指向相关页面,这样不会让用户每次返回都要点浏览器的返回按钮或者是菜单导航。最后返回按钮,每个页面都应该有一个返回顶部浮动按钮。建立一个对用户展现友好的界面结构让网站更容易获取用户的好感,对于粘住用户帮助是大大的。
  四.做好网站的相关统计功能
  网站的统计功能包括日志分析统计,性能分析统计,用户分析统计等。做好相关的统计分析,更加有利于后期的网站运维和优化工作。
  五、提升网站的速度
  随着移动端的发展流量入口也越来越偏向移动,如果企业网站的打开速度慢会增加用户等待时间,这样就会造成用户的不好印象,还会影响搜索排名。因此在网站建设过程中,可以通过各种优化技术提升网站的访问速度。
  
  做网站-做网站公司-专业做网站-做网站价格多少钱-誉网科技-欢迎免费咨询(微信同号)

js抓取网页内容(【知识点】DOM及DOM0级事件概述,你了解多少?)

网站优化优采云 发表了文章 • 0 个评论 • 47 次浏览 • 2022-04-20 00:19 • 来自相关话题

  js抓取网页内容(【知识点】DOM及DOM0级事件概述,你了解多少?)
  1.DOM 和 DOM0 级事件概述
  DOM,由三个词组成,Document(文档)Object(对象)Mode(模型)
  1.文档,即整个HTML网页文档
  2.对象,即网页的“每个”部分,这些对象类似于 HTML 标签,
  连评论都是对象,让 JS 更自由地操作网页界面
  3.模型,用于表达对象之间的关系,方便对象的获取
  DOM的作用是通过JS来操作网页
  节点,DOM 中的一个关键概念
  节点:网页的每个部分都是一个节点,无论是标签还是属性,以及文本。我们的共同节点
  分为四类:
  
  上图中,属性节点也有颜色、宽度、高度等标签属性。
  2.DOM0级事件的应用
  DOM 事件,后面跟一个 0 级,表示后面的内容是 DOM 中最基本的事件。
  首先我们了解获取元素节点(HTML标签)的方法
  方法
  描述
  document.getElementById(id)
  通过元素 id 获取 DOM 对象。
  document.getElementsByTagName(HTML 标签)
  通过标签名称获取一个或多个 DOM 对象。
  document.getElementsByClassName(class)
  通过类名获取一个或多个 DOM 对象。
  document.getElementsByName(name)
  按名称获取一个或多个 DOM 对象。
  document.querySelector(CSS 选择器)
  通过 CSS 选择器选择一个元素。
  document.querySelectorAll(CSS 选择器)
  通过 CSS 选择器选择多个元素。
  获取 HTML 值
  方法
  描述
  元素 node.innerText
  获取 HTML 元素的内部 Text。
  元素 node.innerHTML
  获取 HTML 元素的内部 HTML。
  元素节点属性
  获取 HTML 元素的属性值。
  元素节点.getAttribute(属性)
  获取 HTML 元素的属性值。
  元素 node.style.style
  获取 HTML 元素的内联样式值。
  事件:用户与浏览器中内容的交互属于事件,如按钮点击、鼠标移动、
  点击链接等,事件并不关键,关键是处理事件,我们需要一个行为来处理事件
  做一个过程
  事件处理:在事件对应的属性中设置一些JS代码,以便在事件触发时执行代码。
  DOM中有很多事件交互行为语句。我们常用鼠标点击、鼠标移动、鼠标释放等。
  我们通常使用按钮对应的事件绑定函数来处理事件。当触发条件时(如点击按钮、关闭页面),会调用相应的函数,并执行函数中的语句。此方法称为 HTML 事件
  DOM 事件将 HTML 和 JS 代码分开,使代码更清晰,更易于维护。
  请参见以下示例:
  


333


444



呃呃


var tk1 = document.getElementById("tak");
//通过无序列表的ID获取无序列表的元素
var tk2 = document.getElementById("tck");
//通过按钮的ID获取按钮的元素
tk2.onclick = function(){
//按钮被点击时触发函数
tk1.innerHTML = "555666"
//内容是将无序列表的内容换成引号内的代码
}


//script标签在被执行代码的下面,因为代码是自上而下的执行,所以这样能避免不必要的错误
//这样就更改了网页内的内容,并且JS代码与HTML代码是分开的


  当然,这只是最简单的 DOM 应用程序。通过这个例子,可以初步了解一些代码和语句的用法。 查看全部

  js抓取网页内容(【知识点】DOM及DOM0级事件概述,你了解多少?)
  1.DOM 和 DOM0 级事件概述
  DOM,由三个词组成,Document(文档)Object(对象)Mode(模型)
  1.文档,即整个HTML网页文档
  2.对象,即网页的“每个”部分,这些对象类似于 HTML 标签,
  连评论都是对象,让 JS 更自由地操作网页界面
  3.模型,用于表达对象之间的关系,方便对象的获取
  DOM的作用是通过JS来操作网页
  节点,DOM 中的一个关键概念
  节点:网页的每个部分都是一个节点,无论是标签还是属性,以及文本。我们的共同节点
  分为四类:
  
  上图中,属性节点也有颜色、宽度、高度等标签属性。
  2.DOM0级事件的应用
  DOM 事件,后面跟一个 0 级,表示后面的内容是 DOM 中最基本的事件。
  首先我们了解获取元素节点(HTML标签)的方法
  方法
  描述
  document.getElementById(id)
  通过元素 id 获取 DOM 对象。
  document.getElementsByTagName(HTML 标签)
  通过标签名称获取一个或多个 DOM 对象。
  document.getElementsByClassName(class)
  通过类名获取一个或多个 DOM 对象。
  document.getElementsByName(name)
  按名称获取一个或多个 DOM 对象。
  document.querySelector(CSS 选择器)
  通过 CSS 选择器选择一个元素。
  document.querySelectorAll(CSS 选择器)
  通过 CSS 选择器选择多个元素。
  获取 HTML 值
  方法
  描述
  元素 node.innerText
  获取 HTML 元素的内部 Text。
  元素 node.innerHTML
  获取 HTML 元素的内部 HTML。
  元素节点属性
  获取 HTML 元素的属性值。
  元素节点.getAttribute(属性)
  获取 HTML 元素的属性值。
  元素 node.style.style
  获取 HTML 元素的内联样式值。
  事件:用户与浏览器中内容的交互属于事件,如按钮点击、鼠标移动、
  点击链接等,事件并不关键,关键是处理事件,我们需要一个行为来处理事件
  做一个过程
  事件处理:在事件对应的属性中设置一些JS代码,以便在事件触发时执行代码。
  DOM中有很多事件交互行为语句。我们常用鼠标点击、鼠标移动、鼠标释放等。
  我们通常使用按钮对应的事件绑定函数来处理事件。当触发条件时(如点击按钮、关闭页面),会调用相应的函数,并执行函数中的语句。此方法称为 HTML 事件
  DOM 事件将 HTML 和 JS 代码分开,使代码更清晰,更易于维护。
  请参见以下示例:
  


333


444



呃呃


var tk1 = document.getElementById("tak");
//通过无序列表的ID获取无序列表的元素
var tk2 = document.getElementById("tck");
//通过按钮的ID获取按钮的元素
tk2.onclick = function(){
//按钮被点击时触发函数
tk1.innerHTML = "555666"
//内容是将无序列表的内容换成引号内的代码
}


//script标签在被执行代码的下面,因为代码是自上而下的执行,所以这样能避免不必要的错误
//这样就更改了网页内的内容,并且JS代码与HTML代码是分开的


  当然,这只是最简单的 DOM 应用程序。通过这个例子,可以初步了解一些代码和语句的用法。

js抓取网页内容(网页显示javascript是什么原因_相关专题网页抓取优先策略 )

网站优化优采云 发表了文章 • 0 个评论 • 52 次浏览 • 2022-04-19 05:18 • 来自相关话题

  js抓取网页内容(网页显示javascript是什么原因_相关专题网页抓取优先策略
)
  相关话题
  网页抓取优先策略
  18/1/2008 11:30:00
  网络爬取优先策略,也称为“页面选择”(pageSelection),通常是尽可能先爬取重要的网页,以保证在有限的资源范围内,尽可能多的照顾到那些重要的页面。那么哪些页面最重要?如何量化重要性?
  
  为什么网页显示javascript
  29/10/202018:04:14
  网页显示javascript是因为网页中的代码与浏览器不兼容或者网页调用了错误的javascript代码来制作URL。您可以多次刷新它或关闭浏览器并再次打开它。网页中的代码与浏览器兼容
  
  搜索引擎如何抓取网页?
  22/11/2011 09:50:00
  搜索引擎在抓取大量原创网页时,会进行预处理,主要包括四个方面,关键词的提取,“镜像网页”(网页内容完全一致)未经任何修改)或“转载网页”。”(近似复制,主题内容基本相同但可能有一些额外的编辑信息等,转载的网页也称为“近似镜像网页”)消除,链接分析和网页重要性的计算。
  
  翻页式网络搜索引擎如何抓取
  2013 年 7 月 11 日 10:53:00
<p>Spider 系统的目标是发现和爬取 Internet 上所有有价值的网页。百度官方也明确表示,蜘蛛只能抓取尽可能多的有价值资源,并保持系统中页面与实际环境的一致性。@网站经验造成压力,也就是说蜘蛛不会爬取 查看全部

  js抓取网页内容(网页显示javascript是什么原因_相关专题网页抓取优先策略
)
  相关话题
  网页抓取优先策略
  18/1/2008 11:30:00
  网络爬取优先策略,也称为“页面选择”(pageSelection),通常是尽可能先爬取重要的网页,以保证在有限的资源范围内,尽可能多的照顾到那些重要的页面。那么哪些页面最重要?如何量化重要性?
  
  为什么网页显示javascript
  29/10/202018:04:14
  网页显示javascript是因为网页中的代码与浏览器不兼容或者网页调用了错误的javascript代码来制作URL。您可以多次刷新它或关闭浏览器并再次打开它。网页中的代码与浏览器兼容
  
  搜索引擎如何抓取网页?
  22/11/2011 09:50:00
  搜索引擎在抓取大量原创网页时,会进行预处理,主要包括四个方面,关键词的提取,“镜像网页”(网页内容完全一致)未经任何修改)或“转载网页”。”(近似复制,主题内容基本相同但可能有一些额外的编辑信息等,转载的网页也称为“近似镜像网页”)消除,链接分析和网页重要性的计算。
  
  翻页式网络搜索引擎如何抓取
  2013 年 7 月 11 日 10:53:00
<p>Spider 系统的目标是发现和爬取 Internet 上所有有价值的网页。百度官方也明确表示,蜘蛛只能抓取尽可能多的有价值资源,并保持系统中页面与实际环境的一致性。@网站经验造成压力,也就是说蜘蛛不会爬取

js抓取网页内容(请求超时webdriver类中有三个和时间相关的方法:超时时间 )

网站优化优采云 发表了文章 • 0 个评论 • 45 次浏览 • 2022-04-16 11:11 • 来自相关话题

  js抓取网页内容(请求超时webdriver类中有三个和时间相关的方法:超时时间
)
  前言
  本文文字及图片来源于网络,仅供学习交流,不具有任何商业用途。如有任何问题,请及时联系我们进行处理。
  PS:如需Python学习资料,可点击下方链接自行获取
  Python免费学习资料及群交流答案点击加入
  一般我们使用python的第三方库requests和framework scrapy来爬取在线资源,但是javascript渲染的页面是爬不来的。这时候我们使用网页自动化测试工具 Selenium + 无界面浏览器 PhantomJS 来爬取 javascript 渲染的页面,下面实现一个简单的爬取
  ####环境设置
  我的电脑已经安装了python3.5
  安装硒
  pip3 install selenium
  使用 selenium+phantomjs 的简单爬虫
  from selenium import webdriver
&#39;&#39;&#39;
遇到不懂的问题?Python学习交流群:1136201545
满足你的需求,资料都已经上传群文件,可以自行下载!
&#39;&#39;&#39;
driver = webdriver.PhantomJS()
driver.get(&#39;http://www.baidu.com&#39;) #加载网页
data = driver.page_source #获取网页文本
driver.save_screenshot(&#39;1.png&#39;) #截图保存
print(data)
driver.quit()
  selenium+phantomjs的一些使用方法
  在请求头中设置 user-Agent
  from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
&#39;&#39;&#39;
遇到不懂的问题?Python学习交流群:1136201545
满足你的需求,资料都已经上传群文件,可以自行下载!
&#39;&#39;&#39;
dcap = dict(DesiredCapabilities.PHANTOMJS) #设置useragent
dcap[&#39;phantomjs.page.settings.userAgent&#39;] = (&#39;Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0 &#39;) #根据需要设置具体的浏览器信息
driver = webdriver.PhantomJS(desired_capabilities=dcap) #封装浏览器信息
driver.get(&#39;http://www.baidu.com&#39;) #加载网页
data = driver.page_source #获取网页文本
driver.save_screenshot(&#39;1.png&#39;) #截图保存
print(data)
driver.quit()
  ####请求超时设置
  webdriver类中有三个与时间相关的方法:
  1.pageLoadTimeout 设置整页加载的超时时间。完全加载意味着完全渲染,同步和异步脚本都被执行。
  2.setScriptTimeout 设置异步脚本的超时时间
  3.implicitlyWait 智能等待时间识别对象
  from selenium import webdriver

driver = webdriver.PhantomJS()
driver.set_page_load_timeout(5) #设置超时时间
driver.get(&#39;http://www.baidu.com&#39;)
print(driver.title)
driver.quit()
  设置浏览器窗口大小
  调用启动的浏览器不是全屏的,有时候会影响我们的一些操作,所以我们可以设置全屏
  driver.maximize_window() #设置全屏
driver.set_window_size(&#39;480&#39;,&#39;800&#39;) #设置浏览器宽480,高800  
  元素定位
  from selenium import webdriver

driver = webdriver.PhantomJS()
driver.set_page_load_timeout(5)
driver.get(&#39;http://www.baidu.com&#39;)
try:
driver.get(&#39;http://www.baidu.com&#39;)
driver.find_element_by_id(&#39;kw&#39;) # 通过ID定位
driver.find_element_by_class_name(&#39;s_ipt&#39;) # 通过class属性定位
driver.find_element_by_name(&#39;wd&#39;) # 通过标签name属性定位
driver.find_element_by_tag_name(&#39;input&#39;) # 通过标签属性定位
driver.find_element_by_css_selector(&#39;#kw&#39;) # 通过css方式定位
driver.find_element_by_xpath("//input[@id=&#39;kw&#39;]") # 通过xpath方式定位
driver.find_element_by_link_text("贴吧") # 通过xpath方式定位
print(driver.find_element_by_id(&#39;kw&#39;).tag_name ) # 获取标签的类型
except Exception as e:
print(e)
driver.quit()
  向前或向后移动浏览器
  from selenium import webdriver
driver = webdriver.PhantomJS()
try:
driver.get(&#39;http://www.baidu.com&#39;) #访问百度首页
driver.save_screenshot(&#39;1.png&#39;)
driver.get(&#39;http://www.sina.com.cn&#39;) #访问新浪首页
driver.save_screenshot(&#39;2.png&#39;)
driver.back() #回退到百度首页
driver.save_screenshot(&#39;3.png&#39;)
driver.forward() #前进到新浪首页
driver.save_screenshot(&#39;4.png&#39;)
except Exception as e:
print(e)
driver.quit() 查看全部

  js抓取网页内容(请求超时webdriver类中有三个和时间相关的方法:超时时间
)
  前言
  本文文字及图片来源于网络,仅供学习交流,不具有任何商业用途。如有任何问题,请及时联系我们进行处理。
  PS:如需Python学习资料,可点击下方链接自行获取
  Python免费学习资料及群交流答案点击加入
  一般我们使用python的第三方库requests和framework scrapy来爬取在线资源,但是javascript渲染的页面是爬不来的。这时候我们使用网页自动化测试工具 Selenium + 无界面浏览器 PhantomJS 来爬取 javascript 渲染的页面,下面实现一个简单的爬取
  ####环境设置
  我的电脑已经安装了python3.5
  安装硒
  pip3 install selenium
  使用 selenium+phantomjs 的简单爬虫
  from selenium import webdriver
&#39;&#39;&#39;
遇到不懂的问题?Python学习交流群:1136201545
满足你的需求,资料都已经上传群文件,可以自行下载!
&#39;&#39;&#39;
driver = webdriver.PhantomJS()
driver.get(&#39;http://www.baidu.com&#39;) #加载网页
data = driver.page_source #获取网页文本
driver.save_screenshot(&#39;1.png&#39;) #截图保存
print(data)
driver.quit()
  selenium+phantomjs的一些使用方法
  在请求头中设置 user-Agent
  from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
&#39;&#39;&#39;
遇到不懂的问题?Python学习交流群:1136201545
满足你的需求,资料都已经上传群文件,可以自行下载!
&#39;&#39;&#39;
dcap = dict(DesiredCapabilities.PHANTOMJS) #设置useragent
dcap[&#39;phantomjs.page.settings.userAgent&#39;] = (&#39;Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0 &#39;) #根据需要设置具体的浏览器信息
driver = webdriver.PhantomJS(desired_capabilities=dcap) #封装浏览器信息
driver.get(&#39;http://www.baidu.com&#39;) #加载网页
data = driver.page_source #获取网页文本
driver.save_screenshot(&#39;1.png&#39;) #截图保存
print(data)
driver.quit()
  ####请求超时设置
  webdriver类中有三个与时间相关的方法:
  1.pageLoadTimeout 设置整页加载的超时时间。完全加载意味着完全渲染,同步和异步脚本都被执行。
  2.setScriptTimeout 设置异步脚本的超时时间
  3.implicitlyWait 智能等待时间识别对象
  from selenium import webdriver

driver = webdriver.PhantomJS()
driver.set_page_load_timeout(5) #设置超时时间
driver.get(&#39;http://www.baidu.com&#39;)
print(driver.title)
driver.quit()
  设置浏览器窗口大小
  调用启动的浏览器不是全屏的,有时候会影响我们的一些操作,所以我们可以设置全屏
  driver.maximize_window() #设置全屏
driver.set_window_size(&#39;480&#39;,&#39;800&#39;) #设置浏览器宽480,高800  
  元素定位
  from selenium import webdriver

driver = webdriver.PhantomJS()
driver.set_page_load_timeout(5)
driver.get(&#39;http://www.baidu.com&#39;)
try:
driver.get(&#39;http://www.baidu.com&#39;)
driver.find_element_by_id(&#39;kw&#39;) # 通过ID定位
driver.find_element_by_class_name(&#39;s_ipt&#39;) # 通过class属性定位
driver.find_element_by_name(&#39;wd&#39;) # 通过标签name属性定位
driver.find_element_by_tag_name(&#39;input&#39;) # 通过标签属性定位
driver.find_element_by_css_selector(&#39;#kw&#39;) # 通过css方式定位
driver.find_element_by_xpath("//input[@id=&#39;kw&#39;]") # 通过xpath方式定位
driver.find_element_by_link_text("贴吧") # 通过xpath方式定位
print(driver.find_element_by_id(&#39;kw&#39;).tag_name ) # 获取标签的类型
except Exception as e:
print(e)
driver.quit()
  向前或向后移动浏览器
  from selenium import webdriver
driver = webdriver.PhantomJS()
try:
driver.get(&#39;http://www.baidu.com&#39;) #访问百度首页
driver.save_screenshot(&#39;1.png&#39;)
driver.get(&#39;http://www.sina.com.cn&#39;) #访问新浪首页
driver.save_screenshot(&#39;2.png&#39;)
driver.back() #回退到百度首页
driver.save_screenshot(&#39;3.png&#39;)
driver.forward() #前进到新浪首页
driver.save_screenshot(&#39;4.png&#39;)
except Exception as e:
print(e)
driver.quit()

js抓取网页内容(HTML中最常用的节点类型和方法,你知道吗?)

网站优化优采云 发表了文章 • 0 个评论 • 294 次浏览 • 2022-04-11 22:25 • 来自相关话题

  js抓取网页内容(HTML中最常用的节点类型和方法,你知道吗?)
  在HTML中,我们最常用的节点类型有:元素节点Element(1)、属性节点Attr(2)、文本节点Text(3)、文档节点Document(9)) .
  (2)nodeName 和 nodeValue
  这两个属性完全取决于节点的类型,nodeName 是节点的标签名称,nodeValue 是节点的值。对于元素节点 Element,nodeValue 始终为 null。
  2.1.2表示节点关系
  DOM 中的节点具有一定的关系,正是通过这些关系构建了 DOM 树。Node 定义了允许我们通过这些关系来操作 DOM 节点的属性和方法。
  (1)childnodes 属性:该属性返回由节点的所有子节点组成的NodeList 对象。NodeList 对象的操作请参考《JavaScript 高级编程》第一节0.1第 3 版。
  (2)parentNode 属性:指向节点的父节点
  (3)previousSibling 和 nextSibling 属性:前一个和下一个兄弟节点,兄弟节点是具有相同父节点的节点。
  (3)firstChild 和 lastChild 属性:第一个和最后一个子节点
  (4)hasChildNodes()方法:判断一个节点是否有一个或多个子节点
  (5)ownerDocument:指向节点所在的文档对象Document
  注意:虽然每个节点都有childNodes属性,但是有些节点没有子节点,在介绍具体节点类型时会详细说明。
  2.1.3节点操作方法
  (1)最常用的节点操作方法是appendChild(),用来给节点添加子节点,返回新添加的子节点。如果添加的子节点不是调用该方法之前的节点子节点,则将新节点添加到该节点的末尾;否则,将现有子节点移动到该节点的末尾。
  (2)insertBefore():该方法接受两个参数:要插入的节点和引用节点,如果不传递第二个参数,则默认添加到末尾。
  (3)replaceChild():该方法可以起到删除节点的作用,同时也接收两个参数,第一个参数是要插入的节点,第二个参数是要替换的节点;如果参数小于2会报错,被替换节点的所有关系指针都会从它被替换的节点复制过来,被替换的节点还在文档中,但是文档中没有它的位置。
  (4)removeChild():移除一个节点,类似于replaceChild,被移除的节点还在文档中,但是没有地方放。
  2.1.4 其他方法
  (1)cloneNode():cloneNode()方法对一个节点进行复制,并返回复制的节点。该方法还接收一个布尔参数,表示是否进行深拷贝。如果进行深拷贝,则clone this 节点的整个节点树,否则就克隆这个节点。
  注意:IE在进行节点复制的时候有个bug,就是会复制节点的JS属性,比如事件处理函数。
  (2)normalize():该方法的作用是对文档中的文本节点进行处理,如删除空文本节点、合并相邻的两个文本节点等。
  2.2 文档类型
  在 JS 中,Document 类型代表整个文档。在浏览器中,document对象是HTMLDocument的一个实例,代表了整个HTML页面,同时也是window对象的一个​​属性,所以可以作为一个全局对象来访问。它具有以下特点:
  [1] 节点类型为 9
  [2]nodeName 是#document
  [3] 节点值为空
  [4] 父节点为空
  [5] ownerDocument 为空
  [6]子节点可以是DocumentType(最多一个)、Element(最多一个)、ProccessingInstruction或Comment。
  Document 类型可以表示 HTML 页面或其他基于 XML 的文档,但它最常用作 HTMLDocument 的实例来表示 HTML 页面。通过document对象,不仅可以获取页面相关的信息,还可以修改页面的内容和结构。.
  2.2.1 获取文档的子节点
  有两种方法可以获取文档的子节点:通过 documentElement 属性,它指向 html 元素,或者通过 childNodes[0]。
  另外,作为HTMLDocument的一个实例的document对象还有一个body属性,即document.body,它指向该元素。
  Document的子节点也可能是DocumentType,但是浏览器对document.doctype属性的支持不同,可以总结如下:
  [1] IE8及以下,如果有文档类型声明,会被误认为是Comment节点,document.doctype一直为null。
  [2] IE9+等新浏览器,如果有文档类型声明,则作为文档的第一个子节点。
  注:Advanced JavaScript Programming第三版第1节0.1.2提到,当文档类型声明存在时,Safari、chrome和opera会解析文档声明,但不充当子文档的节点在chrome47.0.2526.80中测试,发现是文档的子节点。
  2.2.2 文档信息
  作为 HTMLDocument 的一个实例,文档对象具有普通 Document 实例对象所没有的属性,这些属性提供了一些关于网页的信息:
  (1)document.title:可以通过title属性获取网页的标题,也可以修改网页的标题,修改后的标题会体现在浏览器的标题栏中.
  (2)document.URL, document.domain, document.referrer:这三个属性都对应HTTP头,其中URL属性可以获取完整的URL,domain可以获取域名,referrer可以获取源当前页面的页面,如果没有源页面,则referrer为空。
  这三个属性中,只能设置domain,但是设置的时候有一些限制,即:domain不能设置为不收录在URL属性中的domain,另外如果domain的设置一开始是“loose” ,它不能再设置为“紧”。
  比如开头:document.domain=,然后设置:document.domain=,会报错。
  2.2.3 查找元素
  文档中定义的getElementById和getElementsByTagName方法大概是我们在处理js dom操作时首先接触到的方法。这两种方法在搜索元素时也很常用。此外,HTMLDocument还有一个独特的getElementByName方法,即根据name属性来查找元素。
  (1)getElementById()方法:根据元素的id查找元素。注意这个方法在IE7及以下浏览器中是区分大小写的。另外,如果有多个页面相同的id元素,只会取第一个匹配的元素。在IE7及以下浏览器中还有一个奇怪的现象:如果一个表单元素的name属性匹配方法的id参数,并且该元素匹配id,那么该元素也被返回。
  (2)getElementsByTagName() 方法:根据元素的标签名查找元素。该方法接受一个参数,返回一个由标签名与传入参数匹配的元素组成的NodeList对象。在HTMLDocument中,返回的是一个HTML采集 object,与NodeList非常相似,除了通过item()方法访问具有特定数字索引的节点外,还提供了namedItem()方法来匹配列表中具有特定名称的元素;同时,我们可以直接使用方括号的方法访问列表中的特定元素,可以传入数值索引值或字符串值,后台会自动调用对应的方法。
  注意:我们也可以传入一个“*”通配符来获取页面的所有元素。
  (3)getElementsByName() 方法:这也是HTMLDocument中才有的方法。它根据name属性的值来搜索元素。与getElementByTagName类似,这个方法也返回一个NodeList对象,而在HTMLDocument中它返回一个 HTML采集 对象。
  2.2.4 特辑
  文档对象也有一些特殊的集合,在 DOM0 阶段已经存在很多特殊的集合:
  (1)document.anchors:获取页面中的所有锚点,即具有name属性的a元素。
  (2)document.applet:获取页面中所有的小程序元素,但是现代网络中很少有小程序元素。
  (3)document.images:获取页面中的所有img元素。
  (4)document.links:获取页面上所有带有href属性的a元素。
  2.2.5 DOM 一致性检查
  由于DOM分为多个层次,也收录多个部分,因此需要检测浏览器实现了哪个部分。document.implementation 属性为此提供了信息。DOM1级别只实现了一个document.implementation的方法:hasfeature(),它有两个参数,第一个是DOM特征的名称,第二个是版本号。如果浏览器支持给定的功能和版本,则返回 true,下表列出了可检测的功能和版本号。
  
  DOM一致性检测也是不够的,因为浏览器在实现的时候可以决定是否和DOM的功能一致,而且hasfeature()很容易返回true,但是返回true不代表浏览器确实实现了这个功能. 因此,在使用功能之前,还是需要进行能力测试。
  2.2.6 文档编写
  document 还提供了向文档写入内容的功能,有以下几种方式:
  (1)document.write()和document.writeln():两者的区别是writeln在每次调用结束时都会写一个\n符号。如果这个是在文档加载完之后调用的,这两个方法会重写整个页面。
  (2)document.close()和document.open():分别用于关闭和打开网页的输入流。
  待续~~~
  参考文章:
  [1]0级DOM[]
  分类:
  技术要点:
  相关文章: 查看全部

  js抓取网页内容(HTML中最常用的节点类型和方法,你知道吗?)
  在HTML中,我们最常用的节点类型有:元素节点Element(1)、属性节点Attr(2)、文本节点Text(3)、文档节点Document(9)) .
  (2)nodeName 和 nodeValue
  这两个属性完全取决于节点的类型,nodeName 是节点的标签名称,nodeValue 是节点的值。对于元素节点 Element,nodeValue 始终为 null。
  2.1.2表示节点关系
  DOM 中的节点具有一定的关系,正是通过这些关系构建了 DOM 树。Node 定义了允许我们通过这些关系来操作 DOM 节点的属性和方法。
  (1)childnodes 属性:该属性返回由节点的所有子节点组成的NodeList 对象。NodeList 对象的操作请参考《JavaScript 高级编程》第一节0.1第 3 版。
  (2)parentNode 属性:指向节点的父节点
  (3)previousSibling 和 nextSibling 属性:前一个和下一个兄弟节点,兄弟节点是具有相同父节点的节点。
  (3)firstChild 和 lastChild 属性:第一个和最后一个子节点
  (4)hasChildNodes()方法:判断一个节点是否有一个或多个子节点
  (5)ownerDocument:指向节点所在的文档对象Document
  注意:虽然每个节点都有childNodes属性,但是有些节点没有子节点,在介绍具体节点类型时会详细说明。
  2.1.3节点操作方法
  (1)最常用的节点操作方法是appendChild(),用来给节点添加子节点,返回新添加的子节点。如果添加的子节点不是调用该方法之前的节点子节点,则将新节点添加到该节点的末尾;否则,将现有子节点移动到该节点的末尾。
  (2)insertBefore():该方法接受两个参数:要插入的节点和引用节点,如果不传递第二个参数,则默认添加到末尾。
  (3)replaceChild():该方法可以起到删除节点的作用,同时也接收两个参数,第一个参数是要插入的节点,第二个参数是要替换的节点;如果参数小于2会报错,被替换节点的所有关系指针都会从它被替换的节点复制过来,被替换的节点还在文档中,但是文档中没有它的位置。
  (4)removeChild():移除一个节点,类似于replaceChild,被移除的节点还在文档中,但是没有地方放。
  2.1.4 其他方法
  (1)cloneNode():cloneNode()方法对一个节点进行复制,并返回复制的节点。该方法还接收一个布尔参数,表示是否进行深拷贝。如果进行深拷贝,则clone this 节点的整个节点树,否则就克隆这个节点。
  注意:IE在进行节点复制的时候有个bug,就是会复制节点的JS属性,比如事件处理函数。
  (2)normalize():该方法的作用是对文档中的文本节点进行处理,如删除空文本节点、合并相邻的两个文本节点等。
  2.2 文档类型
  在 JS 中,Document 类型代表整个文档。在浏览器中,document对象是HTMLDocument的一个实例,代表了整个HTML页面,同时也是window对象的一个​​属性,所以可以作为一个全局对象来访问。它具有以下特点:
  [1] 节点类型为 9
  [2]nodeName 是#document
  [3] 节点值为空
  [4] 父节点为空
  [5] ownerDocument 为空
  [6]子节点可以是DocumentType(最多一个)、Element(最多一个)、ProccessingInstruction或Comment。
  Document 类型可以表示 HTML 页面或其他基于 XML 的文档,但它最常用作 HTMLDocument 的实例来表示 HTML 页面。通过document对象,不仅可以获取页面相关的信息,还可以修改页面的内容和结构。.
  2.2.1 获取文档的子节点
  有两种方法可以获取文档的子节点:通过 documentElement 属性,它指向 html 元素,或者通过 childNodes[0]。
  另外,作为HTMLDocument的一个实例的document对象还有一个body属性,即document.body,它指向该元素。
  Document的子节点也可能是DocumentType,但是浏览器对document.doctype属性的支持不同,可以总结如下:
  [1] IE8及以下,如果有文档类型声明,会被误认为是Comment节点,document.doctype一直为null。
  [2] IE9+等新浏览器,如果有文档类型声明,则作为文档的第一个子节点。
  注:Advanced JavaScript Programming第三版第1节0.1.2提到,当文档类型声明存在时,Safari、chrome和opera会解析文档声明,但不充当子文档的节点在chrome47.0.2526.80中测试,发现是文档的子节点。
  2.2.2 文档信息
  作为 HTMLDocument 的一个实例,文档对象具有普通 Document 实例对象所没有的属性,这些属性提供了一些关于网页的信息:
  (1)document.title:可以通过title属性获取网页的标题,也可以修改网页的标题,修改后的标题会体现在浏览器的标题栏中.
  (2)document.URL, document.domain, document.referrer:这三个属性都对应HTTP头,其中URL属性可以获取完整的URL,domain可以获取域名,referrer可以获取源当前页面的页面,如果没有源页面,则referrer为空。
  这三个属性中,只能设置domain,但是设置的时候有一些限制,即:domain不能设置为不收录在URL属性中的domain,另外如果domain的设置一开始是“loose” ,它不能再设置为“紧”。
  比如开头:document.domain=,然后设置:document.domain=,会报错。
  2.2.3 查找元素
  文档中定义的getElementById和getElementsByTagName方法大概是我们在处理js dom操作时首先接触到的方法。这两种方法在搜索元素时也很常用。此外,HTMLDocument还有一个独特的getElementByName方法,即根据name属性来查找元素。
  (1)getElementById()方法:根据元素的id查找元素。注意这个方法在IE7及以下浏览器中是区分大小写的。另外,如果有多个页面相同的id元素,只会取第一个匹配的元素。在IE7及以下浏览器中还有一个奇怪的现象:如果一个表单元素的name属性匹配方法的id参数,并且该元素匹配id,那么该元素也被返回。
  (2)getElementsByTagName() 方法:根据元素的标签名查找元素。该方法接受一个参数,返回一个由标签名与传入参数匹配的元素组成的NodeList对象。在HTMLDocument中,返回的是一个HTML采集 object,与NodeList非常相似,除了通过item()方法访问具有特定数字索引的节点外,还提供了namedItem()方法来匹配列表中具有特定名称的元素;同时,我们可以直接使用方括号的方法访问列表中的特定元素,可以传入数值索引值或字符串值,后台会自动调用对应的方法。
  注意:我们也可以传入一个“*”通配符来获取页面的所有元素。
  (3)getElementsByName() 方法:这也是HTMLDocument中才有的方法。它根据name属性的值来搜索元素。与getElementByTagName类似,这个方法也返回一个NodeList对象,而在HTMLDocument中它返回一个 HTML采集 对象。
  2.2.4 特辑
  文档对象也有一些特殊的集合,在 DOM0 阶段已经存在很多特殊的集合:
  (1)document.anchors:获取页面中的所有锚点,即具有name属性的a元素。
  (2)document.applet:获取页面中所有的小程序元素,但是现代网络中很少有小程序元素。
  (3)document.images:获取页面中的所有img元素。
  (4)document.links:获取页面上所有带有href属性的a元素。
  2.2.5 DOM 一致性检查
  由于DOM分为多个层次,也收录多个部分,因此需要检测浏览器实现了哪个部分。document.implementation 属性为此提供了信息。DOM1级别只实现了一个document.implementation的方法:hasfeature(),它有两个参数,第一个是DOM特征的名称,第二个是版本号。如果浏览器支持给定的功能和版本,则返回 true,下表列出了可检测的功能和版本号。
  
  DOM一致性检测也是不够的,因为浏览器在实现的时候可以决定是否和DOM的功能一致,而且hasfeature()很容易返回true,但是返回true不代表浏览器确实实现了这个功能. 因此,在使用功能之前,还是需要进行能力测试。
  2.2.6 文档编写
  document 还提供了向文档写入内容的功能,有以下几种方式:
  (1)document.write()和document.writeln():两者的区别是writeln在每次调用结束时都会写一个\n符号。如果这个是在文档加载完之后调用的,这两个方法会重写整个页面。
  (2)document.close()和document.open():分别用于关闭和打开网页的输入流。
  待续~~~
  参考文章:
  [1]0级DOM[]
  分类:
  技术要点:
  相关文章:

js抓取网页内容(怎么来提升网站的抓取量:如何控制主动抓取时间)

网站优化优采云 发表了文章 • 0 个评论 • 55 次浏览 • 2022-04-10 00:27 • 来自相关话题

  js抓取网页内容(怎么来提升网站的抓取量:如何控制主动抓取时间)
  网站抓取量是影响网站收录的重要因素,所以控制抓取量非常重要网站,那么如何提高网站的抓取量@网站 抓取量呢?
  网站爬取量=网站总爬取时间/网站单页爬取时间
  那么自然我们可以从两个维度增加网站的抓取量:
  一、减少网站单个页面的爬取时间
  对于网站单个页面的爬取时间,主要是提高网站的性能,主要包括服务器空间和网站代码、JS、图片压缩、视频优化等., 推广网站 会有非常快的打开速度,会缩短搜索引擎程序爬取和下载单个页面的时间,从而访问更多的页面,增加爬取量。
  二、增加网站的总爬取时间
  网站的总爬取时间可以细分为搜索程序的主动爬取和被动爬取
  对于主动爬取,蜘蛛沿着站点中的一个链接不断爬取,那么如何控制主动爬取的时间呢?
  首先很多链接必须是可爬取的,不要让蜘蛛程序不识别或者没有权限,比如js跳转什么的,注册只能访问,然后是网站的物理层和逻辑层应该是短的,物理层面我们可以在首页放一些重要的页面,以缩短物理距离;在逻辑层次上,网站的层次关系要简洁,比如常见的树形结构,首页-栏目页-内容页;后者是内部链接的设置,尽量将网站相关的内容连接成网络,方便爬虫程序爬取。
  至于被动爬取,更多是从站外链接的角度来理解。
  我们可以在站外建立外链,吸引蜘蛛来找我们网站,增加爬取网站的频率和时间,但不要随便为外链做,尽量分享价值,正如百度工程师LEE所说,有推荐值的外链很有用。否则,我们的外部链接的有效性将大大降低。当然,对于一些来Talking的人来说,聊胜于无。
  还有一点需要注意的是允许蜘蛛程序爬取,这涉及到robots文件的设置。其次,很多网站会有反采集系统,有的服务器有防火墙,日志的HTTP状态码,会影响蜘蛛对网页的抓取,从而影响收录@ &gt; 和交通。
  """ 查看全部

  js抓取网页内容(怎么来提升网站的抓取量:如何控制主动抓取时间)
  网站抓取量是影响网站收录的重要因素,所以控制抓取量非常重要网站,那么如何提高网站的抓取量@网站 抓取量呢?
  网站爬取量=网站总爬取时间/网站单页爬取时间
  那么自然我们可以从两个维度增加网站的抓取量:
  一、减少网站单个页面的爬取时间
  对于网站单个页面的爬取时间,主要是提高网站的性能,主要包括服务器空间和网站代码、JS、图片压缩、视频优化等., 推广网站 会有非常快的打开速度,会缩短搜索引擎程序爬取和下载单个页面的时间,从而访问更多的页面,增加爬取量。
  二、增加网站的总爬取时间
  网站的总爬取时间可以细分为搜索程序的主动爬取和被动爬取
  对于主动爬取,蜘蛛沿着站点中的一个链接不断爬取,那么如何控制主动爬取的时间呢?
  首先很多链接必须是可爬取的,不要让蜘蛛程序不识别或者没有权限,比如js跳转什么的,注册只能访问,然后是网站的物理层和逻辑层应该是短的,物理层面我们可以在首页放一些重要的页面,以缩短物理距离;在逻辑层次上,网站的层次关系要简洁,比如常见的树形结构,首页-栏目页-内容页;后者是内部链接的设置,尽量将网站相关的内容连接成网络,方便爬虫程序爬取。
  至于被动爬取,更多是从站外链接的角度来理解。
  我们可以在站外建立外链,吸引蜘蛛来找我们网站,增加爬取网站的频率和时间,但不要随便为外链做,尽量分享价值,正如百度工程师LEE所说,有推荐值的外链很有用。否则,我们的外部链接的有效性将大大降低。当然,对于一些来Talking的人来说,聊胜于无。
  还有一点需要注意的是允许蜘蛛程序爬取,这涉及到robots文件的设置。其次,很多网站会有反采集系统,有的服务器有防火墙,日志的HTTP状态码,会影响蜘蛛对网页的抓取,从而影响收录@ &gt; 和交通。
  """

js抓取网页内容( 这了,更多相关Node.js爬取图片(组图))

网站优化优采云 发表了文章 • 0 个评论 • 160 次浏览 • 2022-04-07 20:01 • 来自相关话题

  js抓取网页内容(
这了,更多相关Node.js爬取图片(组图))
  Node.js实现爬取网站图片的示例代码
  目录编写核心代码示例截图涉及知识点
  开发一个小型爬虫,涉及的知识点如下:
  关于cheerio
  什么是cheerio?
  Cheerio 是 jQuery 核心实现的特定于服务器的、快速、灵活的实现。主要用于服务端解析html。特点如下:
  安装cheerio
  首先在命令行下切换到程序目录,然后输入安装命令进行安装,如下:
  cnpm install cheerio
  安装过程如下:
  
  准备好工作了
  在编写爬虫之前,首先需要对目标内容进行分析。这次需要爬取某个网站,星空类型的图片内容。经过分析发现,所有的图片都是ul下每个li中的a标签在img里面,这次只需要解析出img的src属性就可以得到图片的下载路径。如下:
  
  核心代码
  经过以上分析,代码通过Node.js编写,分两步获取所有图片的url路径,即解析所有目标img元素的src属性。然后下载特定图像并保存。
  引用所需的功能模块如下:
  var https = require('https');
var cheerio = require('cheerio');
var fs = require('fs');
  获取并解析html页面内容如下:
<p>//爬取的网址
var addrs=['https://www.*****.com/topic/show_27202_1.html','https://www.******.com/topic/show_27202_2.html','https://www.*****.com/topic/show_27202_3.html'];
var logger = fs.createWriteStream('./download/log.txt',{flags:'a+',autoClose:'true'});
for(i in addrs){
(function(num){
var addr = addrs[num];
//创建目录
var p1 = new Promise(function(resolve,reject){
fs.access('./download',function(err){
if(err){
fs.mkdir('./download',function(e){
if(e){
console.log('创建失败');
}
});
}else{
resolve("success");
}
});
});
p1.then(function(datas){
var html='';
var p2 = new Promise(function(resolve,reject){
https.get(addr,function(res){
res.on('data',function(data){
html+=data.toString();
})
res.on('end',function(){
resolve("success");
});
});
});
p2.then(function(data){
//下载完成后,进行解析
const $ =cheerio.load(html);
var lis = $('#img-list-outer').find('li');
for(var j=0;j 查看全部

  js抓取网页内容(
这了,更多相关Node.js爬取图片(组图))
  Node.js实现爬取网站图片的示例代码
  目录编写核心代码示例截图涉及知识点
  开发一个小型爬虫,涉及的知识点如下:
  关于cheerio
  什么是cheerio?
  Cheerio 是 jQuery 核心实现的特定于服务器的、快速、灵活的实现。主要用于服务端解析html。特点如下:
  安装cheerio
  首先在命令行下切换到程序目录,然后输入安装命令进行安装,如下:
  cnpm install cheerio
  安装过程如下:
  
  准备好工作了
  在编写爬虫之前,首先需要对目标内容进行分析。这次需要爬取某个网站,星空类型的图片内容。经过分析发现,所有的图片都是ul下每个li中的a标签在img里面,这次只需要解析出img的src属性就可以得到图片的下载路径。如下:
  
  核心代码
  经过以上分析,代码通过Node.js编写,分两步获取所有图片的url路径,即解析所有目标img元素的src属性。然后下载特定图像并保存。
  引用所需的功能模块如下:
  var https = require('https');
var cheerio = require('cheerio');
var fs = require('fs');
  获取并解析html页面内容如下:
<p>//爬取的网址
var addrs=['https://www.*****.com/topic/show_27202_1.html','https://www.******.com/topic/show_27202_2.html','https://www.*****.com/topic/show_27202_3.html'];
var logger = fs.createWriteStream('./download/log.txt',{flags:'a+',autoClose:'true'});
for(i in addrs){
(function(num){
var addr = addrs[num];
//创建目录
var p1 = new Promise(function(resolve,reject){
fs.access('./download',function(err){
if(err){
fs.mkdir('./download',function(e){
if(e){
console.log('创建失败');
}
});
}else{
resolve("success");
}
});
});
p1.then(function(datas){
var html='';
var p2 = new Promise(function(resolve,reject){
https.get(addr,function(res){
res.on('data',function(data){
html+=data.toString();
})
res.on('end',function(){
resolve("success");
});
});
});
p2.then(function(data){
//下载完成后,进行解析
const $ =cheerio.load(html);
var lis = $('#img-list-outer').find('li');
for(var j=0;j

js抓取网页内容(第二次刷新页面获取frame内容(title=framename))

网站优化优采云 发表了文章 • 0 个评论 • 45 次浏览 • 2022-04-07 18:02 • 来自相关话题

  js抓取网页内容(第二次刷新页面获取frame内容(title=framename))
  js抓取网页内容:设置窗口刷新的间隔时间,比如说:60毫秒,2s。即第一次刷新页面,能获取第一个frame内容(title=framename),第二次刷新页面获取frame内容(title=title),以此类推。cookie保存第一次抓取到的网页内容js内容:把第一次抓取到的内容以iframe的形式保存下来,后面就不用刷新页面了。就酱~。
  没人正确回答你的问题。为什么frame会放在tr里面?判断这个frame存不存在的直接方法是看tr的rank,和tl的rank。
  搞清楚th的作用;然后判断是不是需要保存
  直接通过用python的迭代器,去读,判断文本形式类型,是numpy数组就保存,是while循环,
  python有个库叫xpath,可以通过正则表达式获取文本格式的标签,然后用beautifulsoup进行解析,
  normalizationtemplateinpythonwritingresponsewithnormalization·issue#446·pythonrepository/response
  可以用beautifulsoup库,可以直接拿解析出来的dom类型的数据。
  写个函数把列表解析为dom结构,然后存到image的cookiesession中,然后去webdriver抓,
  有趣的问题:技术解析,抓取部分网页,搞定使用python解析youtube视频,效果如下,解析时把坐标加密,只在上面抓了,下面的版本不展示了! 查看全部

  js抓取网页内容(第二次刷新页面获取frame内容(title=framename))
  js抓取网页内容:设置窗口刷新的间隔时间,比如说:60毫秒,2s。即第一次刷新页面,能获取第一个frame内容(title=framename),第二次刷新页面获取frame内容(title=title),以此类推。cookie保存第一次抓取到的网页内容js内容:把第一次抓取到的内容以iframe的形式保存下来,后面就不用刷新页面了。就酱~。
  没人正确回答你的问题。为什么frame会放在tr里面?判断这个frame存不存在的直接方法是看tr的rank,和tl的rank。
  搞清楚th的作用;然后判断是不是需要保存
  直接通过用python的迭代器,去读,判断文本形式类型,是numpy数组就保存,是while循环,
  python有个库叫xpath,可以通过正则表达式获取文本格式的标签,然后用beautifulsoup进行解析,
  normalizationtemplateinpythonwritingresponsewithnormalization·issue#446·pythonrepository/response
  可以用beautifulsoup库,可以直接拿解析出来的dom类型的数据。
  写个函数把列表解析为dom结构,然后存到image的cookiesession中,然后去webdriver抓,
  有趣的问题:技术解析,抓取部分网页,搞定使用python解析youtube视频,效果如下,解析时把坐标加密,只在上面抓了,下面的版本不展示了!

js抓取网页内容(JavaScript驾驭网页-CSS与DOM利用DOM分割HTML利用分割 )

网站优化优采云 发表了文章 • 0 个评论 • 49 次浏览 • 2022-04-04 08:03 • 来自相关话题

  js抓取网页内容(JavaScript驾驭网页-CSS与DOM利用DOM分割HTML利用分割
)
  JavaScript 控制网页 - CSS 和 DOM
  用 DOM 分割 HTML
  使用 JavaScript 控制网页内容很像烹饪。只是不必清理剩菜,也没有办法享受美味的结果。
  但是,您将能够完成 Web 内容的 HTML 组件:更重要的是,您将具有替换 Web 组件的能力。
  JavaScript 让您可以随心所欲地操作网页的 HTML 代码,打开各种有趣的机会,这一切都归功于标准对象:DOM
  getElementById
  
HTML标签都有一个"id"属性,第个标签的该属性都是独一无二的
可以通过id属性来获取元素
内容
var sceneDesc=document.getElementById("div2");
getElementById可以通过元素的id属性去访问标签
括号里是id的值
  getElementsByTagName
  
也可以通过标签名来获取元素
内容
var divs=document.getElementsByTagName("div");
getElementsByTagName返回所有div标签,结果是一个数组,结果按照标签在HTML中的顺序排列
括号里是标签名
var divs=document.getElementsByTagName("div")[2];
用索引获取第三个div标签
  内部HTML
  
innerHTML特性对所有存储在元素里的内容提供了访问管道
通过innerHTML访问元素内存储的内容:
<p id="story"> you are standing
alone in the woods.
document.getElementById("story").innerHTML;
返回的内容是: you are standing alone in the woods.
innerHTML获取的是指定元素下的所有内容与标签
innerHTML也能用于设置网页内容
document.getElementById("story").innerHTML="You are not alone!";
innerHTML只用来设置可以包含文本的标签</p>
  关于JavaScript控制网页——获取网页元素的知识就给大家介绍了这么多,希望对大家有所帮助!
   查看全部

  js抓取网页内容(JavaScript驾驭网页-CSS与DOM利用DOM分割HTML利用分割
)
  JavaScript 控制网页 - CSS 和 DOM
  用 DOM 分割 HTML
  使用 JavaScript 控制网页内容很像烹饪。只是不必清理剩菜,也没有办法享受美味的结果。
  但是,您将能够完成 Web 内容的 HTML 组件:更重要的是,您将具有替换 Web 组件的能力。
  JavaScript 让您可以随心所欲地操作网页的 HTML 代码,打开各种有趣的机会,这一切都归功于标准对象:DOM
  getElementById
  
HTML标签都有一个"id"属性,第个标签的该属性都是独一无二的
可以通过id属性来获取元素
内容
var sceneDesc=document.getElementById("div2");
getElementById可以通过元素的id属性去访问标签
括号里是id的值
  getElementsByTagName
  
也可以通过标签名来获取元素
内容
var divs=document.getElementsByTagName("div");
getElementsByTagName返回所有div标签,结果是一个数组,结果按照标签在HTML中的顺序排列
括号里是标签名
var divs=document.getElementsByTagName("div")[2];
用索引获取第三个div标签
  内部HTML
  
innerHTML特性对所有存储在元素里的内容提供了访问管道
通过innerHTML访问元素内存储的内容:
<p id="story"> you are standing
alone in the woods.
document.getElementById("story").innerHTML;
返回的内容是: you are standing alone in the woods.
innerHTML获取的是指定元素下的所有内容与标签
innerHTML也能用于设置网页内容
document.getElementById("story").innerHTML="You are not alone!";
innerHTML只用来设置可以包含文本的标签</p>
  关于JavaScript控制网页——获取网页元素的知识就给大家介绍了这么多,希望对大家有所帮助!
  

官方客服QQ群

微信人工客服

QQ人工客服


线