0

Google の検索結果から URL を抽出するのに問題があります。このコードは長い間機能していましたが、今週、Google がいくつかの変更を加えたようで、現在、必要な実際の URL に囲まれた大量の余分な文字が表示されています。

preg_match_all('@<h3\s*class="r">\s*<a[^<>]*href="([^<>]*)"[^<>]*>(.*)</a>\s*</h3>@siU',     $results, $matches[$key]);

編集

上記のコードでスクレイピングすると、すべてのリンクがこのようになります

/url?url=http://cooksandtravelbooks.com/write-for-us/&rct=j&sa=U&ei=XdayUNnHBIqDiwKZuYEY&ved=0CBQQFjAA&q=cooking+%5C%22Write+for+Us%5C%22&usg=AFQjCNGMiCiWYY_8JDAhqJggVDW2qHRMfw
4

1 に答える 1

3
<?php
$url = "http://www.google.com";
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);

$dom = new DOMDocument();
@$dom->loadHTML($data);

foreach($dom->getElementsByTagName('a') as $link) {
    echo $link->getAttribute('href');
    echo "<br />";
}
?>
于 2012-11-25T21:39:26.747 に答える