>  Q&A  >  본문

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简单实现了下:

<?php
set_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);
PHP中文网PHP中文网2761일 전603

모든 응답(3)나는 대답할 것이다

  • 高洛峰

    高洛峰2017-04-22 08:57:58

    크롤링에 어떤 언어 코드를 사용하더라도 Baidu 콘텐츠를 그렇게 쉽게 캡처할 수는 없습니다.
    Baidu는 예전의 Baidu가 아닙니다. 다양한 쿠키 인증 없이는 잡을 수도 없습니다. Baidu의 프런트 엔드 코드에는 우여곡절이 가득합니다. , 당신이 잡히는 것을 방지하기 위해서입니다.

    회신하다
    0
  • 迷茫

    迷茫2017-04-22 08:57:58

    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
    우체국장님, 이렇게 많은 양을 버려야 돌아올 수 있잖아요?

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-22 08:57:58

    주인님, 바이두가 수집한 POI를 잡아보실래요?

    회신하다
    0
  • 취소회신하다