我给我的客户提供你了一个基于magento(麦进斗)(麦进斗)的电子商务网站,它们大概有2000多个商品。为了提高效率和节约时间,我打算从些个爬虫从上面爬两千个数据下来,但是当我使用get_file_contentsto收集产品信息页面的时候出现了一个严重的问题。
这个问题是:
如果你要查看这些商品,你需要登录进去。但是,标准的magento(麦进斗)是不允许我登进去的,我该怎么解决这个问题?
解决方案:
使用stream_context_create的话,可以在你需要的时候给file_get_contents发送必要的信息。
我的建议是,打开你的浏览器和登录到网站。打开Firebug来查看你的发送和接收信息。
这里给你列出了你需要编辑的php文档:
<?php
// Create a stream
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-language: en\r\n" .
"Cookie: foo=bar\r\n"
)
);
$context = stream_context_create($opts);
// Open the file using the HTTP headers set above
$file = file_get_contents('http://www.example.com/', false, $context);
?>
编辑(2):这是从最简单的方法解决你的问题的范围内出发,但是如果你想知道如何把网站之后,你可以看看网页的DOM Document::loadhtml方法。这将会给你所需要的功能(即XPath查询,相对应的,getelementsbyid)把你需要的东西。
如果你想把简单的东西,你也可以使用正则表达式与preg_match_all。
)
更多内容,请关注麦进斗科技(www.maijindou.com.cn)。