刮取某些数据的网页

时间:2010-11-13 00:47:00

标签: jquery

我们正在创建一个脚本。

基本上用户进入表单域:3358928 OnSubmit ajax,访问下面的页面,将用户输入的数字字符串附加到网址。

http://www.fairtrading.qld.gov.au/ftlr/Default.aspx?ResultType=LNum&LNum=3358928&LType=REAL%20ESTATE&Page=1

在该网址上,是名字和姓氏。 我们如何刮取名字和姓氏,并将其回复给我们的表格。

基本上问题来自于抓取页面。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:1)

首先,您的Web服务器必须设置为代理所有客户端的请求。否则,第三方服务器would have to send an Access-Control-Allow-Origin header和访问者的浏览器必须支持跨域XMLHttpRequest。 (Flash / Silverlight同样需要一个crossdomain.xml文件。)

这正是http://ajax-cross-domain.com/的工作方式。 (特定的代理脚本恰好是JavaScript编码第三方服务器的响应。)

我注意到特定页面包含一个XHTML doctype,它似乎表明你可以使用 native XMLHttpRequest或jQuery(而不是AJAX Cross Domain)的responseXML属性来浏览器的XML解析器的优势。不幸的是,这只是另一个输出无效XML的网站 - 它没有正确地将&符号编码为&

因此,您很可能会使用正则表达式not ideal。最有可能的是,最简单的方法是查找td元素的文本(依赖于完全相同的标记未嵌套的事实):

// Creating the regexp object    
var regex = /<td class="BodyFont">(.*?)<\/td>/g;

// Execute this line of code as many times as needed.
contentsOfNextTd = regex.exec(textOfThePage)[1];

丑陋,考虑到只要我们使用有效的XML就会更简单。如果您有选项,我建议您在自己的服务器上抓取页面并返回格式良好的JSON或XML响应 - 无论如何您需要服务器端代理,它将使客户端代码更简单。