首页 > 解决方案 > php preg_match_all 获取第二个选择框选项

问题描述

我在从 file_get_contents 获得的网页选择框上应用 preg_match_all 但问题是它只获得第一个选择框并且无法获得第二个选择框及其选项。我的代码是

 $html = file_get_contents("https://www.amazon.co.jp/-/en/dp/B09C1PM7K3?th=1");
 $quantityMatch  = preg_match_all( '@(<option value="([^"]+)">([^<]+)</option>)@', $html, $quantity);

    $result = array();
    $k = 0;
    foreach ($quantity[0] as $i => $value){
        $result[$quantity[2][$i]] = $quantity[3][$i];
        $k = $i;
    }
    $finalQty = $quantity[3][$k];
    // print_r($result);
    dd($finalQty);

它正在从此页面获取类别,但我需要第二个选择框,即网页上的库存数量。

标签: phpweb-scrapingpreg-matchfile-get-contentspreg-match-all

解决方案


您可以通过此链接查看所选选项的数据。如果您使用“<li”之类的短语进行搜索,则未选中

<li ... data-dp-url="/dp/B09C1P6T71/ref=twister_B09GWCBGQ5?_encoding=UTF8&psc=1"

您可以获得未选择选项的 data-dp-url 并添加您的链接等:https ://www.amazon.co.jp/-/en/ 并再次文件获取内容新网址,这是您的新选项股票:)

示例:您的新第二个选项链接:

https://www.amazon.co.jp/-/en/dp/B09C1Q11Z9/ref=twister_B09GWCBGQ5?_encoding=UTF8&psc=1

如果你不明白,我可以编写示例代码并发布它。

在此处输入图像描述 红色:未选择的选项 黑色:已选择的选项

例如第二个选项产品库存计数:

$html = file_get_contents("https://www.amazon.co.jp/-/en/dp/B09C1PM7K3?th=1");
    $qq = preg_match_all( '@(data-dp-url="([^<]+)" )@', $html, $option);
    $link = "https://www.amazon.co.jp/-/en".str_replace("&amp;", '&', explode('"', $option[0][1])[1]);
    $html_new_option = file_get_contents($link);
    $quantityMatch  = preg_match_all( '@(<option value="([^"]+)">([^<]+)</option>)@', $html_new_option, $quantity);

    $result = array();
    $k = 0;
    foreach ($quantity[0] as $i => $value){
        $result[$quantity[2][$i]] = $quantity[3][$i];
        $k = $i;
    }
    $finalQty = $quantity[3][$k];
    dd($finalQty);

=> $option[0][WANT_OPTION_ORDER]


推荐阅读