march alex's blog
          hello,I am march alex
          posts - 52,comments - 7,trackbacks - 0
          上百度搜東西的時候,右邊總有一些推薦的東西很吸引我們的注意,因為那是百度的推薦系統給我推薦的我們感興趣的東西。
          那這些推薦的內容也在源代碼里面出現了。
          所以采用類似分析網頁源代碼的方法我們能夠把里面的東西全都挖下來。
          比如說我在百度搜索了“一句話木馬”,百度就會跳到一個固定的鏈接:
          https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E4%B8%80%E5%8F%A5%E8%AF%9D%E6%9C%A8%E9%A9%AC&rsv_pq=fcb3de5b00004128&rsv_t=6f62cGPSB5k0xYiyhhPSjjDXemE9KEBVk0diG3YR6PnVzpq1vmoq%2FDdFD8E&rsv_enter=1&rsv_n=2&rsv_sug3=1
          好長是不?
          其實我們可以將這個url縮短一下,變成:
          http://www.baidu.com/s?wd=%E4%B8%80%E5%8F%A5%E8%AF%9D%E6%9C%A8%E9%A9%AC
          等同于
          http://www.baidu.com/s?wd=一句話木馬
          網頁的右側出現了三個欄:“相關病毒”,“相關人物”和“其他人還搜”,直覺告訴我第一個是聯系比較緊密的。
          所以我的目的就是變成找出第一個欄(不光是這里)的所有推薦內容。
          分析網頁會發現每個欄目最前面都會有一個標志性的字符串:"<span title="
          而每個欄目里面的每個內容前面也會有一個標志性的字符串:"rsv_re_ename"
          據此我寫了一個分析的FinderRelate類,其中的getRelate(String word)用于獲得關鍵詞word對應的推薦的內容。
          import java.io.BufferedReader;
          import java.io.InputStreamReader;
          import java.net.HttpURLConnection;
          import java.net.URL;
          import java.util.StringTokenizer;


          public class FindRelate {
              
              public static String[] getRelate(String word) throws Exception {
                  String urlString = "http://www.baidu.com/s?wd=" + word;
                  String ans = "";
                  String s_span = "<span title=";
                  int len_span = s_span.length();
                  String s_rsv = "rsv_re_ename";
                  int len_rsv = s_rsv.length();
                  
                  URL url = new URL(urlString);
                  HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                  BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "utf-8"));
                  String line;
                  boolean ok = false;
                  while ((line = reader.readLine()) != null){
                      int len = line.length();
                       for(int i=0;i+len_span<=len;i++) {
                           if(line.substring(i, i+len_span).equals(s_span)) {
                               if(ok == false) ok = true;
                               else {
                                   StringTokenizer st = new StringTokenizer(ans);
                                   int n = st.countTokens();
                                   String[] res = new String[n];
                                   for(int j=0;j<n;j++) {
                                       res[j] = st.nextToken();
                                   }
                                   return res;
                               }
                           }
                       }
                       if(ok == falsecontinue;
                       for(int i=0;i+len_rsv<=len;i++) {
                           if(line.substring(i, i+len_rsv).equals(s_rsv)) {
                               for(int j=i+len_rsv+3;j<len && line.charAt(j)!='\'';j++) {
                                   ans += line.charAt(j);
                               }
                               ans += " ";
                           }
                       }
                  }
                  String[] null_res = new String[1];
                  null_res[0] = null;
                  return null_res;
              }
              public static void main(String[] args) throws Exception {
                  String[] res = getRelate("一句話木馬");
                  int len = res.length;
                  for(int i=0;i<len;i++)
                      System.out.println(res[i]);
              }
          }
          其輸出結果如下:
          廣外女生木馬
          qq尾巴
          熊貓燒香
          歡樂時光病毒
          灰鴿子
          大小姐木馬
          盜號
          機器狗
          盜號木馬
          冰河木馬
          沖擊波病毒
          莫里斯蠕蟲
          asp木馬
          cih病毒
          火焰病毒
          posted on 2015-03-07 00:07 marchalex 閱讀(1557) 評論(0)  編輯  收藏 所屬分類: java小程序
          主站蜘蛛池模板: 德阳市| 深水埗区| 都兰县| 崇信县| 江西省| 民县| 饶平县| 商河县| 顺昌县| 封丘县| 通辽市| 阳原县| 青神县| 中山市| 壶关县| 禄劝| 黄梅县| 河西区| 丹寨县| 高平市| 嘉禾县| 太保市| 博兴县| 江口县| 新巴尔虎右旗| 万全县| 荣昌县| 皮山县| 乳山市| 泸溪县| 独山县| 湄潭县| 新宾| 且末县| 东城区| 南投县| 商南县| 新丰县| 建始县| 隆尧县| 永德县|