我正在制作一个PHP爬虫来探索名为alza.cz的电子商店。我希望链接到该电子商店中的所有产品。我在地址:http://www.alza.cz/notebooky/18842920.htm。,但这只显示前21项。要获得所有项目,我必须去处理:http://www.alza.cz/notebooky/18842920.htm#f&pg=1/10000。
Crawler使用file_get_contents
获取页面的HTML,然后使用DOM进行解析。问题是,看起来file_get_contents
在#之后忽略了那个部分(只返回前21个而不是全部)。有什么想法吗?
答案 0 :(得分:1)
file_get_contents会忽略网址的#xxxxx
部分(fragment identifier),并且不会将其包含在请求的网址中。这是用户代理在客户端使用的东西 - 很可能,该网站有一些Javascript,它将使用AJAX加载新的结果页面。
您可以看到该网页是否服从Google AJAX Crawling Specification,但根据您的示例,它看起来不像。如果您看到像#!foo=bar
这样的“哈希爆炸”片段标识符,那就是一个好兆头。