Ruby:無法抓取百度搜索結(jié)果
問題描述
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
而獲取到的結(jié)果是百度首頁的源碼,并不是搜索site:www.cnblogs.com的結(jié)果
不知道,Ruby中有關(guān)于網(wǎng)絡(luò)編程方面的好書籍沒?剛接觸ruby,很多東西不知道從何找(目前都是到官網(wǎng)看文檔)。
使用PHP簡單實現(xiàn)了下:
<?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:不管你使用什么語言的代碼來抓取,你都不可能這么簡單就就抓到百度的內(nèi)容了。百度不是以前那個百度了,沒各種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嗎?
相關(guān)文章:
1. mysql優(yōu)化 - mysql count(id)查詢速度如何優(yōu)化?2. mysql主從 - 請教下mysql 主動-被動模式的雙主配置 和 主從配置在應(yīng)用上有什么區(qū)別?3. angular.js - angularjs 用ng-reapt渲染的dom 怎么獲取上面的屬性4. 主從備份 - 跪求mysql 高可用主從方案5. css3 - [CSS] 動畫效果 3D翻轉(zhuǎn)bug6. node.js - node_moduls太多了7. angular.js - Angular路由和express路由的組合使用問題8. python如何不改動文件的情況下修改文件的 修改日期9. python - django 里自定義的 login 方法,如何使用 login_required()10. angular.js - 不適用其他構(gòu)建工具,怎么搭建angular1項目
![css3 - [CSS] 動畫效果 3D翻轉(zhuǎn)bug](http://www.aoyou183.cn/attached/image/news/202304/110831f073.png)