基本上,我要做的就是创建一个小脚本,访问在论坛中找到最新的帖子并从中提取一些文本或图像。我在python中使用htmllib模块和一些正则表达式。但是,脚本仍然不是很方便,如果我能以某种方式将它放入HTML文档中会更好。看来简单地嵌入Python脚本是不可能的,所以我想看看是否有像python的htmllib这样的类似功能可以用来访问其他网页并从中提取一些信息。
(基本上,如果我能以html文档的形式获取此脚本,我可以打开一个html文档,而不是导航到几个不同的页面以获取我想要检查的信息)
我很确定javascript没有我需要的功能,但是我想知道其他语言,比如jQuery,甚至是像AJAX这样的东西?
答案 0 :(得分:3)
正如Greg所提到的,当尝试从远程服务器加载时,Ajax解决方案无法“开箱即用”。
但是,如果您尝试从相同的服务器加载,则应该相当简单。我正在提出这个答案,以展示如何使用jQuery在几行代码中完成这项工作。
<div id="placeholder">Please wait, loading...</div>
<script type="text/javascript" src="/path/to/jquery.js">
</script>
<script type="text/javascript>
$(document).ready(function() {
$('#placeholder').load('/path/to/my/locally-served/page.html');
});
</script>
如果您尝试从与您所在服务器不同的服务器加载资源,那么解决安全限制的一种方法是提供代理脚本,该脚本可以获取服务器上的远程内容,并使其成为可能。看起来它来自你自己的领域。
以下是有关jQuery的load
方法的文档:http://docs.jquery.com/Ajax/load
还有另外一个值得注意的好功能,即部分页面加载。例如,假设您的远程页面是完整的HTML文档,但您只需要该页面中单个div的内容。您可以将选择器传递给load
方法,如上例所示,这将进一步简化您的任务。例如,
$('#placeholder').load('/path/to/my/locally-served/page.html #someTargetDiv');
祝你好运!
-Mike
答案 1 :(得分:1)
有两种通用方法:
这两种方法之间的区别在于第三方服务器看到来自的请求。在第一种情况下,它来自您的Web服务器。在第二种情况下,它来自访问您页面的用户的浏览器。
某些浏览器可能无法正常处理从第三方服务器加载内容(也就是说,它们可能会弹出警告框或其他内容)。
答案 2 :(得分:0)
你可以嵌入Python。最直接的方法是使用cgi模块。如果脚本经常运行并且您正在使用Apache,那么使用mod_python或mod_wsgi会更有效。你甚至可以使用像Django这样的Python框架,并用Python编写整个网站。
你可能也在Javascript中对此进行编码,但这会更加棘手。对于跨站点请求(啊,不安全的互联网)存在很多安全问题,因此当您尝试通过浏览器执行此操作时,它往往是一个棘手的域。