【问题标题】:Parse this HTML解析这个 HTML
【发布时间】:2023-03-22 05:47:01
【问题描述】:

我需要将此 HTML 代码解析为字符串数组,然后我可以将其添加到数据库中。这是我正在解析的 HTML 代码:

http://gyazo.com/eab3a140264d354060268a97ae8fa6de

顶部的“market_listing_table_header”类似乎定义了页面其余部分将显示的内容。 “market_listing_row_link”类是 100 个中的 1 个,但我还得到了 40 个 100 个列表。

我需要的是“沙漠之鹰纪念品 | 手炮(磨损严重)”部分中的每个类别,它位于“market_listing_item_name_block”中。 “result_0_name”从那个到“result_100_name”然后再次从 0 开始,用于页面上的 ~4000 个列表。

如果可能的话,我还想在“result_0_image”部分中获取 src="get this link" 以与“result_0_name”一起使用。

这是我现在使用的代码:

$str = '$html';
    $DOM = new DOMDocument;
    $DOM->loadHTML($str);

   $items = $DOM->getElementsByTagName('market_listing_item_block');

   //just displaying the items for now, for testing,
   //though I may need help putting the data in an array as well.
   for ($i = 0; $i < $items->length; $i++)
        echo $items->item($i)->nodeValue . "<br/>";

我在“getElementsByTagName('???');”中添加了不同的代码部分,但我无法弄清楚获得我想要的部分应该是什么。任何帮助都会很棒,谢谢。

【问题讨论】:

    标签: php mysql dom html-parsing


    【解决方案1】:

    getElementsByTagName 是这里的错误函数。当您使用锚点 (&lt;a href="xy"&gt;...&lt;/a&gt;) 时,标签名称类似于a。相反,您需要寻找 class market_listing_item_block

    另外,你需要在第一行使用双引号。

    基于this answer,适合您的代码应该是:

    $str = "$html";
    $DOM = new DOMDocument;
    $DOM->loadHTML($str);
    
    $finder = new DomXPath($DOM);
    $items = $finder->query("//*[contains(@class, 'market_listing_item_name')]");
    
    //just displaying the items for now, for testing,
    //though I may need help putting the data in an array as well.
    for ($i = 0; $i < $items->length; $i++)
        echo $items->item($i)->nodeValue . "<br/>";
    

    【讨论】:

    • 也许这是我的循环来回显结果,但我没有打印任何内容。你能在 for 循环中看到错误吗?
    • 哦,您在代码示例中使用了错误的类。 market_listing_item_block 应该是 market_listing_item_name_block - 这就是为什么我也使用了错误的类。
    • 哦,是的,那是错误的。我只是尝试了一些,我注意到实际上还有另一个子类,所以我尝试了“market_listing_item_name”和“market_listing_item_name_block”,两者都没有收益。
    • market_listing_item_name 更好,只是测试了代码。它工作正常。
    • 我发现了你的问题!你正在使用$str = '$html';,它应该是$str = "$html";。使用单引号,$str 将只是 "$html" 而不是变量 $htmlcontent
    猜你喜欢
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    相关资源
    最近更新 更多