php - 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);
它正在从此页面获取类别,但我需要第二个选择框,即网页上的库存数量。
解决方案
您可以通过此链接查看所选选项的数据。如果您使用“<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("&", '&', 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]
推荐阅读
- c# - Properties.Settings.Upgrade() 在新的混淆程序集中找不到过去的用户配置
- javascript - 如何将闪亮的面板输出放置在鼠标附近但在 DT 表上?
- javascript - 制表器中的日期时间选择器?
- unity3d - 小行星统一复制的运动奇怪问题
- reactjs - React:将名称-值对呈现为 React.FC
- wordpress - 有没有办法在 wocommerce 的我的帐户页面的端点内添加带有自定义字段的表单?
- java - 具有多个文件的记录器 cdi
- javascript - 弹出窗口 JavaScript
- service-worker - ReferenceError:文档未定义。服务人员。工作箱
- awk - 在 awk 中使用填充将数字转换为字符串