Rumah  >  Soal Jawab  >  teks badan

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 hari yang lalu602

membalas semua(3)saya akan balas

  • 高洛峰

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

    Tidak kira apa kod bahasa yang anda gunakan untuk merangkak, anda tidak boleh menangkap kandungan Baidu dengan begitu mudah.
    Baidu bukan seperti Baidu dahulu Tanpa pengesahan kuki yang pelbagai, anda tidak akan dapat menangkapnya , hanya untuk mengelakkan anda daripada ditangkap.

    balas
    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_sug3=1&rsv_sug3=5<27&rsv_spt=3&ie=utf-8&rsv_n=2&rsv_sug3=1&rsv_sug3=5<27&rsv_sug_5 Tuan pos, anda hanya boleh kembali dengan membuang jumlah yang banyak, bukan?

    balas
    0
  • PHP中文网

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

    Pemilik, adakah anda ingin merebut POI yang dikumpul oleh Baidu?

    balas
    0
  • Batalbalas