js抓取网页内容(【知识点】化学实验基本知识,你了解多少?)

优采云 发布时间: 2022-01-30 14:09

  js抓取网页内容(【知识点】化学实验基本知识,你了解多少?)

  1、有问题

  同源政策

  页面中的Javascript只能读取和访问同域的网页。这里需要注意的是,Javascript本身的域定义与其所在的网站无关,只有嵌入了Javascript代码的文档的域。比如下面的示例代码:

  DOCTYPE HTML>

This is a webpage came from http://localhost:8000

123

console.log($('#test').text());

  HTML文档来自:8000,表示其域为:8000(域和端口也有关系)。虽然页面中的jquery是从其中加载的,但是jquery的域只和它所在的html文档的域有关。这样就可以访问到html文档的属性,所以上面的代码就可以正常运行了。

  PS 使用上述代码的原因是开发者将通用的Javascript库(如JQuery)地址指向公共相同的URL。用户加载一次 JS 后,后续加载会被浏览器缓存,从而加快页面加载速度。

  从这个角度来看问题,如果提问者知道的远端指的是互联网上的任何一个页面,那么你所期望的功能就无法实现;如果远端指的是您可以控制 网站@ > 的提问者,请参阅下面的放宽同源策略;

  放宽同源策略Document.domain:对于子域的情况。对于多个窗口(一个页面有多个iframe),通过将document.domain的值设置为同一个域,Javascript可以访问外部窗口;跨域资源共享:通过添加Access-Control-

  Allow-Origin,此标头收录所有允许域的列表。受支持的浏览器将允许此页面上的 Javascript 访问这些域;

  跨文档消息传递:该方法与域无关,不同文档的Javascript可以不受限制地相互收发消息,但不能主动读取和调用另一个文档的方法属性;

  如果提问者控制了远程页面,您可以尝试第二种方法。

  服务器端抓取

  根据提问者的需要,比较可行的方案应该是在服务器端进行处理。有了(),可以在服务端使用Javascript语法进行DOM操作,也可以使用nodejs进行进一步分析等。当然,后续操作也可以使用Python、php、Java语言。

  综上所述:

  (1)服务器开启网页跨域限制;

  (2)使用服务器请求页面

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线