我在选择各种HTML内容方面技巧娴熟。因此,所有人都有信心创建一些应该抓取网站内容的代码,我偶然发现了一些奇怪的JavaScript代码,其中源代码将其价格放入其中。


 < script&gt ;
 var productConfig = {“attributes”:{“178”:{“id”:“178”,“code”:“bp_flavour”,“label”:“Smaak”,“options”:[{“id”:“28 ”, “标签”: “Aardbeien”, “oldPrice”: “0”, “产品”:[ “2292”, “2294”, “2296”, “2702”]}
 代码>


 ....更多的乱码和每个产品变体的4个:(所以像这样的80个不同的行:)
&#xA;&#xA; <预> <代码>, “childProducts”:{&#XA; “2292”: “价格”: “64.99”, “finalPrice”: “64.99”, “no_of_servings”: “166”, “178”: “27” , “179”: “34”},&#XA; “2292”: “价格”: “17.99”, “finalPrice”: “17.99”, “no_of_servings”: “33”, “178”: “28”, “179”: “25”}&#XA;}&#XA;&#XA;&#XA;&LT; /脚本&GT;&#XA; 代码> &#XA;&#XA;显然2292是手头产品的ID。我想读出“finalPrice”。
&#xA;&#xA;我的PHP代码:
&#xA;&#xA; $ file = $ this-&gt; curl_get_file_contents($ url);&#xA; $ doc = new DOMDocument();&#xA; @ $ doc-&GT; loadHTML($文件);&#XA; $ doc-&gt; preserveWhiteSpace = false;&#xA; $ finder = new DomXPath($ doc);&#xA;&#xA; $ price_query = $ finder-&gt; query(“// script [contains(。,'finalPrice')]”);&#xA; $ price_raw = $ price_query-&gt; item(0) - &gt; nodeValue;&#xA;
&#xA;&#xA; 但我的查询 // script [包含(。,“finalPrice”)]
爆炸整个脚本我无法找到更深入,更具体地在JavaScript中挖掘的方法。有谁知道更多/可以给我一个提示?
答案 0 :(得分:0)
您可以尝试正则表达式:
npm install
答案 1 :(得分:0)
您可以像这样从对象中读取属性。
var obj = {"2292":{"price":"64.99","finalPrice":"64.99","no_of_servings":"166","178":"27","179":"34"}};
obj['2292']['finalPrice']
答案 2 :(得分:0)
所以我做了:用提供的XPATH查询读出脚本。比:strstr直到我得到了我想要的json部分。接下来是:PHP的json_decode函数。将它放在一个数组中,而不是在数组中搜索我想要的内容。这是我的解析代码:
$price_query = $finder->query("//script[contains(.,'finalPrice')]");
$price_raw = $price_query->item(0)->nodeValue;
$price_1 = strstr($price_raw, "childProducts");
$price_2 = str_replace('childProducts":', '', $price_1);
$price_3 = strstr($price_2, ',"priceFromLabel"', true);
$price_data = json_decode($price_3, true);
看起来像str str但是有效。谢谢大家的想法。 json_decode ftw!