今天发现北邮人论坛的访问十大需要登录了。之前的爬虫小工具可能爬不到数据。
这里补上一般的php自动登录获取cookie后curl网址的步骤。
- 先找到一般的网址的登录API
比如水木社区的url: “http://m.newsmth.net/user/login”;
这个接口传2个参数id和passwd。这里都用明文传输!没用上https很容易被劫持,这样你的账号密码就暴露了。毕竟是非企业网站,就这样吧。
这里curl的时候记得:curl_setopt($ch, CURLOPT_HEADER, 1);这样可以获得set的cookie
</pre> $ch = curl_init(); //$url = "http://m.byr.cn/"; $url = "http://m.newsmth.net/user/login"; $post = <strong>array</strong>("id" => "XXXXX", "passwd" => "XXXXXX"); //$post = json_encode($post); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //curl_setopt($ch, CURLOPT_REFERER, "http://m.byr.cn/"); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36'); $content = curl_exec($ch); curl_close($ch); preg_match_all('/Set-Cookie:(.*)/i', $content, $match);
这样可以简单的提取设置的cookie
返回的cookies有4组,存储下。
2 模拟带cookie的登录
还是一样的curl请求,换做要请求的url。
记得加上
</pre> curl_setopt($ch, CURLOPT_COOKIE, 'nforum[UTMPUSERID]=xxx; nforum[UTMPKEY]=xxx; nforum[UTMPNUM]=1234; nforum[PASSWORD]=thisisjustforshow');
之后就是一个登录的身份请求了。
最后,成功的爬到了北邮十大内容。
具体内容看:http://www.dadaaierer.com/bbs/?s=1
论坛上的李老湿等机器人也是在登录的状态下,post数据到发表文章接口,来实现自动发文。其实这里也可以把其他论坛的热点内容机器发文到论坛一下,后续内容有时间再做。
好久不来,发现楼主技术又有所沉淀了,赞!
博主你好,我想找一个 2014.09.05 的北邮十大的帖子,后来被论坛那边清水了,不知道你这边有没有爬到那几天的数据啊,谢啦!!☆⌒(*^-゜)v
我那时候的没爬。不过http://search.icybee.cn 这个有全站的