Ruby:无法抓取百度搜索结果
问题描述
URL:http://www.baidu.com/s?wd=site:www.cnblogs.com代码:
def get_html(url) uri = URI(url) p resp = Net::HTTP.get(uri)end
而获取到的结果是百度首页的源码,并不是搜索site:www.cnblogs.com的结果
不知道,Ruby中有关于网络编程方面的好书籍没?刚接触ruby,很多东西不知道从何找(目前都是到官网看文档)。
使用PHP简单实现了下:
<?phpset_time_limit(0);function _rand(){ $length = 26; $chars = '0123456789abcdefghijklmnopqrstuvwxyz'; $max = strlen($chars) - 1; mt_srand((double)microtime() * 1000000); $string = ’’; for ($i = 0; $i < $length; $i++) {$string.= $chars[mt_rand(0, $max) ]; } return $string;}$HTTP_SESSION = _rand();$HTTP_SESSION;$HTTP_Server = 'www.baidu.com';$HTTP_URL = '/s?wd=site:www.cnblogs.com';$ch = curl_init();curl_setopt($ch, CURLOPT_URL, 'http://' . $HTTP_Server . $HTTP_URL);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)');$res = curl_exec($ch);curl_close($ch);print_r($res);
问题解答
回答1:不管你使用什么语言的代码来抓取,你都不可能这么简单就就抓到百度的内容了。百度不是以前那个百度了,没各种cookie认证,屁都抓不到,你最好研究一下看看有没有api吧,百度前端的代码各种绕,目的就是不让你抓到。
回答2:http://www.baidu.com/s?wd=www.cnblogs.com&rsv_bp=0&ch=&tn=19045005_5_pg&bar=&rsv_spt=3&ie=utf-8&rsv_n=2&rsv_sug3=1&rsv_sug4=57&rsv_sug2=0&inputT=635楼主,这样么一大堆扔出去才有回吧?
回答3:楼主 ,你是要 抓取 baidu采集的 兴趣点poi吗?

相关文章:
1. python - 如何解决程序运行太久之后被操作系统暂停的情况?2. html5 - 为什么浏览器可以显示HTML文档中未被定义的标签?3. javascript - 图片能在网站显示,但控制台仍旧报错403 (Forbidden)4. PhpStudy8.0 CPU过高5. mysql 能不能创建一个 有列级函数 的联合视图?6. python - pig latin问题 总是出现list/string index out of range7. 闯关的第二个问题的答案是错的吧?8. 为什么HTML5规范中会包含一些和html无关的东西?如本地存储等。9. javascript - sublime怎么支持webp的浏览?10. 安装mysql,完成时提示的是用户名root,在终端查看版本时显示的不是root,请问这怎么解决

网公网安备