1

我正在制作一个 PHP 爬虫来探索名为 alza.cz 的电子商店。我想要该电子商店中所有产品的链接。我在地址:http ://www.alza.cz/notebooky/18842920.htm .,但是这个只显示前 21 个项目。要获得所有物品,我必须前往地址:http ://www.alza.cz/notebooky/18842920.htm#f&pg=1/10000 。

爬虫用于file_get_contents获取页面的 HTML,然后使用 DOM 对其进行解析。问题是,它看起来file_get_contents忽略了 # 之后的那部分(只返回前 21 个项目而不是全部)。有任何想法吗?

4

1 回答 1

1

file_get_contents 将忽略#xxxxxURL 的一部分(片段标识符),并且不会将其包含在请求的 URL 中。这是用户代理在客户端使用的东西——很可能,网站有一些 Javascript 可以使用 AJAX 加载新的结果页面。

您可以查看该页面是否遵守Google AJAX Crawling Specification,尽管根据您的示例,它看起来不像。如果您看到像 一样的“hash bang”片段标识符#!foo=bar,这是一个好兆头。

因此,您需要在Firebug类似软件中观察 AJAX 请求,并自己复制相同的请求。

于 2013-09-27T16:19:35.473 回答