以编程方式从网页源中提取特定数据

时间:2011-08-06 13:18:44

标签: java php javascript html xml

以下问题适用于任何编程语言

我正在开发一个程序,它提供网页源代码作为输入将提取一些特定类型的数据。

假设我提供了以下页面源作为我程序的输入:

<table>
    <tr>
        <td id="a" class="product-name">Product A</td>
        <td id="1" class="product-price">$100</td>
    </tr>

    <tr>
        <td id="b" class="product-name">Product B</td>
        <td id="2" class="product-price">$200</td>
    </tr>

    <tr>
        <td id="c" class="product-name">Product C</td>
        <td id="3" class="product-price">$300</td>
    </tr>
</table

在这个网页上,有提到的产品及其售价。网页看起来像这样:

 Product A: $100
 Product B: $200
 Product C: $300

我想使用此页面源将此数据复制到数据库。由于修复标记和类(如<td><div>等)中提到了产品名称及其价格,因此如何以编程方式提取这些数据?是否有任何好的算法/代码/库从页面源中提取这些数据?

我认为这可以通过在Javascript中使用getElementByID来完成。但我不确定。还是可以使用XML?怎么样?还有其他好方法/算法吗?

注意:我正在访问自己的网站。我已经有了一个旧网站,我想要使用新网站中的所有数据。再次手动输入所有数据是一项艰巨的任务。所以我想复制旧的数据。任何编程语言都适合我。

2 个答案:

答案 0 :(得分:2)

只需使用:http://simplehtmldom.sourceforge.net/

顺便说一下,它叫做抓取

答案 1 :(得分:2)

要查询XML文档中的数据,您可以使用许多编程语言中提供的xpath language。它明确地处理XML文档,而不是字符串。

另一种方法是对要从中提取数据的文档进行字符串分析,并根据需要在更低的级别上提取数据。这有时会更快,但XPATH更加健壮,因为它可能在标签,属性和值之间有所不同。

通常,您只需要从文档转换为另一种形式,因为这么多语言提供了XSLTXQuery的接口。

您可以搜索的字词是 scraping ,如果您正在寻找PHP的一些资源,请web-scraping-with-php结帐available in print as well