【发布时间】:2012-11-25 21:32:25
【问题描述】:
我无法从 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
【问题讨论】:
-
我建议不要使用正则表达式来解析 html...stackoverflow.com/questions/1732348/…。您最好使用 phpquery 或任何其他 DOM 解析器,而不是正则表达式。
-
它对我有用。你能给我们展示一两个错误结果的例子,以及你用来检索它们的代码吗? (请不要发表评论。编辑问题并将此信息添加到其中。)
-
您没有获得“实际网址”,因为当您点击 Google 链接时,您实际上是返回 Google,然后他们将您重定向到真实网址。
标签: php regex html-parsing