web-scraping - 使用 simple_hml_dom 从站点提取数据的问题
问题描述
这是我要从中提取文本的网站: https ://www.tradesquare.com.au/milano-decor-eden-gas-lift-bed-with-headboard-platform-storage-dark-grey-fabric-queen -深灰色.html
我想提取 sku 编号,这是在浏览器中看到的如下文本,但我得到的似乎是产品 ID,而不是 sku 本身。
<div class="product attribute sku">
<strong class="type">sku</strong>
<div class="value" itemprop="sku">9724e130</div>
我的问题是,使用 simple_html_code 的正确代码应该是什么?
我'div#[class="product attribute sku"] div';
用来提取文本,它可以工作,但它给了我这个:dc6a2744
感谢对我的问题的回答。
这是我的 php 程序的一部分,用于提取上述问题中的 sku:
<?php
$user_agent ='Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (K HTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36';
$curl = curl_init();
$link = "https://www.tradesquare.com.au/milano-decor-eden-gas-lift-bed-with-headboard-platform-storage-dark-grey-fabric-queen-dark-grey.html";
curl_setopt($curl, CURLOPT_URL, $link);
curl_setopt($curl, CURLOPT_USERAGENT, $user_agent);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_REFERER, $link);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$str = curl_exec($curl);
curl_close($curl);
include 'simple_html_dom.php';
$all = new simple_html_dom();
$all->load($str);
$sku = trim($all->find('div[class="product attribute sku"] [itemprop="sku"]', 0)->plaintext);
echo $sku;
$all->clear();
unset($all);
exit;
?>
这行得通,事实上我已经有一些复杂的工作查询,但正如我所解释的,在这种情况下,它只提取产品 id,而不是浏览器中可见的 sku,所以我寻求帮助来指导我一个正确的方向。谢谢。
解决方案
[编辑 2] 最终答案:
由于第一次调用没有生成寻找的值,因此无法通过 php.ini 访问它。加载整个页面时的客户端后期操作将能够完成这项工作。
原始答案:
据我所知,simple_html_dom
使用jquery
/css
符号进行选择。
您可以使用:
div[class='product attribute sku'] div
或者 :
div[class='product attribute sku'] [itemprop='sku']
瞄准你的div
:)
[编辑 1]
请试试
$sku = trim($all->find('div[class="product attribute sku"] [itemprop="sku"]', 0)->innertext);
我在我的测试服务器上得到了很好的结果:)
推荐阅读
- sql - 内部加入,加入没有按预期工作
- javascript - 在 vue 应用程序中导入 chessboard.js 的问题
- android - 调用需要 API 级别 21(当前最低为 14):android.speech.tts.TextToSpeech#speak
- python - DolphinDB 中是否有任何简单的方法来完成 Python 中的**shift down** 函数?
- docker - 当我添加 GSCFuse 并在 Kubernetes 中部署我的应用程序时收到此错误消息任何建议可能是什么问题
- java - 使用 Ion 库加载返回 null JsonObject 结果
- python - 不受信任的泡菜来源
- c# - 将列字符串添加到 DataGridVIew 中每个选定行的列表中
- scala - 使用 @uncheckedVariance 强制 Scala 抽象类型的协方差
- c# - Xamarin CollectionView 与 HorizontalItemSpacing 相等的项目宽度