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

优采云 发布时间: 2021-09-29 07:15

  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文档的属性,所以上面的代码可以正常运行。

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

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

  放宽同源 policyDocument.domain:在子域的情况下使用。对于多个窗口(一个页面有多个iframe),Javascript可以通过将document.domain的值设置为同一个域来访问国外的窗口;跨域资源共享:添加Access-Control-通过在服务器端返回header

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

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

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

  服务器端爬取

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

  综上所述:

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

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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线