我已經開始用curl,dom,xpath構建單個Curl會話,並且效果很好。PHP - 多捲曲 - 抓取數據/內容
我現在正在建立一個基於curl的刮板,用於在一個流程中從多個站點獲取數據,並且該腳本回顯我輸入的單個短語..但它沒有拾取變量。
do{
$n=curl_multi_exec($mh, $active);
}while ($active);
foreach ($urls as $i => $url){
$res[$i]=curl_multi_getcontent($conn[$i]);
echo ('<br />success');
}
因此,這的確呼應了成功文本多次有網址..但實際上這是不是我想要的。我想分手的HTML我就像跟單捲曲會話。 。
我的確在單一卷曲會議內容:
//parse the html into a DOMDocument
$dom = new DOMDocument();
@$dom->loadHTML($res);
// grab all the on the page
$xpath = new DOMXPath($dom);
$product_img = $xpath->query("//div[@id='MAIN']//a");
for ($i = 0; i < $product_img->length; $i++){
$href = $product_img->item($i);
$url = $href->getAttribute('href');
echo "<br />Link : $url";
}
此分析DOM/XPath是努力爲單個會話捲曲,但不是當我運行multicurl。 Multicurl我可以爲會話的URL做curl_multi_getcontent,但這不是想要的.. 我想獲得與我在單個會話中使用Dom/Xpath獲取的內容相同的內容。 我能做些什麼?
編輯
看來我有getAttribute方法問題。這是一個圖像鏈接,我有麻煩抓住。刮當鏈路被示出,但隨後將引發一個錯誤:
致命錯誤:調用到非對象的成員函數的getAttribute()中
查詢:
// grab all the on the page
$xpath = new DOMXPath($dom);
$product_img = $xpath->query("//img[@class='product']");
$product_name = $xpath->query("//img[@class='product']");
這是工作:
for ($i = 0; i < $product_name->length; $i++) {
$prod_name = $product_name->item($i);
$name = $prod_name->getAttribute('alt');
echo "<br />Link stored: $name";
}
這不是工作:
for ($i = 0; i < $product_img->length; $i++) {
$href = $product_img->item($i);
$pic_link = $href->getAttribute('src');
echo "<br />Link stored: $pic_link";
}
任何想法我做錯了什麼? 在此先感謝。
歡迎來到SO!爲了幫助我們更輕鬆地閱讀該問題,請正確格式化代碼。 – weltschmerz
嗨查爾斯。感謝您的幫助! – Niels