1、存在问题

same origin policy(同源策略)

页面中的Javascript只能读取,访问同域的网页。这里需要注意的是,Javascript自身的域定义和它所在的网站没有任何关系,只和该Javascript代码所嵌入的文档的域有关。如以下示例代码:

<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>This is a webpage came from http://localhost:8000</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
</head>
<body>
<div id="test">123</div>
<script type="text/javascript">
console.log($('#test').text());
</script>
</body>
</html>

该HTML文档来源于http://localhost:8000,这意味着它的域为http://localhost:8000(域和端口也相关),虽然页面中的jquery加载自ajax.googleapis.com,然而该JQuery的域只和它所处的HTML文档的域有关,从而可以访问该HTML文档的属性,因而以上代码可以正常运行。
附:使用上述代码的原因是,开发者将通用的Javascript库(如JQuery)地址指向公共相同的URL。当用户加载过一次该JS后,以后的加载将都通过浏览器缓存,从而加快了页面加载速度。

从这个角度看问题,假如提问者所知的远端指的是互联网上任意的页面,那么不能实现你所期望的功能;如果远端指的是提问者你所拥有控制权的网站,请看下面的Relaxing the same-origin policy;

Relaxing the same-origin policy

  1. Document.domain:用于子域名的情况。对于多个windows(一个页面有多个iframe),通过设置document.domain的值为相同的域,使得Javascript可以访问异域window;
  2. Cross-origin resource sharing:通过在服务器端返回头增加Access-Control-

Allow-Origin,该头部包含了所有允许访问的域的列表。支持的浏览器将允许本页面Javascript访问这些域;

  1. cross-document messaging:该方式和域无关,不同文档的Javascript可以相互发送接受消息而不受限制,然而不能主动趣读取,调用另一个文档的方法属性;

如果提问者拥有远端页面的控制权,可以尝试第二种方法。

服务器端抓取

根据提问者的需求,比较可行的方案应该是在服务器端进行处理。借助(http://phantomjs.org/),你可以使用Javascript语法在服务器端进行DOM操作,同时你可以使用nodejs进行进一步的分析等,当然,你也可以使用Python, php ,Java语言进行后续操作。

结论:

(1)服务端将网页的跨域限制打开;

(2)使用服务度端请求页面

前端js 爬取 获取网页的更多相关文章

  1. Python 爬取单个网页所需要加载的地址和CSS、JS文件地址

    Python 爬取单个网页所需要加载的URL地址和CSS.JS文件地址 通过学习Python爬虫,知道根据正式表达式匹配查找到所需要的内容(标题.图片.文章等等).而我从测试的角度去使用Python爬 ...

  2. node.js爬取数据并定时发送HTML邮件

    node.js是前端程序员不可不学的一个框架,我们可以通过它来爬取数据.发送邮件.存取数据等等.下面我们通过koa2框架简单的只有一个小爬虫并使用定时任务来发送小邮件! 首先我们先来看一下效果图 差不 ...

  3. 使用htmlparse爬虫技术爬取电影网页的全部下载链接

    昨天,我们利用webcollector爬虫技术爬取了网易云音乐17万多首歌曲,而且还包括付费的在内,如果时间允许的话,可以获取更多的音乐下来,当然,也有小伙伴留言说这样会降低国人的知识产权保护意识,诚 ...

  4. 使用htmlparser爬虫技术爬取电影网页的全部下载链接

    昨天,我们利用webcollector爬虫技术爬取了网易云音乐17万多首歌曲,而且还包括付费的在内,如果时间允许的话,可以获取更多的音乐下来,当然,也有小伙伴留言说这样会降低国人的知识产权保护意识,诚 ...

  5. Python:将爬取的网页数据写入Excel文件中

    Python:将爬取的网页数据写入Excel文件中 通过网络爬虫爬取信息后,我们一般是将内容存入txt文件或者数据库中,也可以写入Excel文件中,这里介绍关于使用Excel文件保存爬取到的网页数据的 ...

  6. python爬取某个网页的图片-如百度贴吧

    python爬取某个网页的图片-如百度贴吧 作者:vpoet mail:vpoet_sir@163.com 注:随意copy,不用告诉我 #coding:utf-8 import urllib imp ...

  7. python使用requests库爬取网页的小实例:爬取京东网页

    爬取京东网页的全代码: #爬取京东页面的全代码 import requests url="https://item.jd.com/2967929.html" try: r=requ ...

  8. 爬取指定网页的源代码显示在GUI中

    建立一个GUI图形界面用来用来输入网址和代码显示的区域 #encoding=utf-8 __author__ = 'heng' #创建一个可以抓取输入网址源代码的GUI from urllib2 im ...

  9. R语言爬取动态网页之环境准备

    在R实现pm2.5地图数据展示文章中,使用rvest包实现了静态页面的数据抓取,然而rvest只能抓取静态网页,而诸如ajax异步加载的动态网页结构无能为力.在R语言中,爬取这类网页可以使用RSele ...

随机推荐

  1. <choose><when><if>

    --说明:choose类似于switch,其中的when如果不符合则进入otherwise(类似于default),可以结合if标签使用. -- <select> -- SELECT * ...

  2. Linux LVM 逻辑卷管理

    使用Linux好久了,一定会意识到一个问题,某个分区容量不够用了,想要扩容怎么办?这里就涉及到LVM逻辑卷的管理了,可以动态调整Linux分区容量. LVM 概述 全称Logical Volume M ...

  3. oracle instantclient_12_2安装

    下载地址 http://www.oracle.com/technetwork/database/database-technologies/instant-client/downloads/index ...

  4. NGINX状态模块的使用

    nginx状态模块可以用来查看当前nginx服务器的并发量和总的请求数 启用nginx的状态模块 状态模块需要在编译安装的时候启用. 1.下载nginx源码包 2.安装nginx并启用模块 3.修改n ...

  5. Python +appium 封装desired_caps模块

    使用python+appium做android的自动化测试时,首先需要启动appium服务,然后连接上手机,配置如下: desired_caps = {"platformName" ...

  6. 我感觉这个书上的微信小程序登陆写得不好

    基本功能是OK,但是感觉传的数据太多,不安全,需要改写. App({ d: { hostUrl: 'http://www.test.com/index.php', //请填写您自己的小程序主机URL ...

  7. Django REST framework —— 认证组件源码分析

    我在前面的博客里已经讲过了,我们一般编写API的时候用的方式 class CoursesView(ViewSetMixin,APIView): pass 这种方式的有点是,灵活性比较大,可以根据自己的 ...

  8. 项目Alpha冲刺(团队)-第七天冲刺

    格式描述 课程名称:软件工程1916|W(福州大学) 作业要求:项目Alpha冲刺(团队) 团队名称:为了交项目干杯 作业目标:描述第七天冲刺的项目进展.问题困难.心得体会 队员姓名与学号 队员学号 ...

  9. python的信号管理

    if __name__ == '__main__': # Make it possible to exit application with ctrl+c on console signal.sign ...

  10. 域渗透:pth(pass the hash)

    pass the hash原理: 在Windows系统中,通常会使用NTLM身份认证,NTLM认证不使用明文口令,而是使用口令加密后的hash值,hash值由系统API生成(例如LsaLogonUse ...