`
wbj0110
  • 浏览: 1549106 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

JAVA实现新浪微博页面抓取(非API)

阅读更多

cookie用浏览器的开发者工具登陆微博后得到 
只写了抓取下载页面部分 抽取内容可用jsoup完成 注意这是模拟浏览器登录的操作 你在浏览器上完成不了的 代码也不能完成(比如访问不是粉丝的人的第11页好友列表(新浪规定只能访问前10页非自己粉丝的微博用户))这个代码依赖JSOUP 

 

  1. package jsoupTest;
  2. import java.io.IOException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;
  3. import org.jsoup.Connection.Method;import org.jsoup.Connection.Respe;import org.jsoup.Jsoup;
  4. public class JsoupTest { public static void main(String[] args) throws IOException { Map<String, String> map = new HashMap<>(); //map.put请根据自己的微博cookie得到
  5. Respe res =                                 Jsoup.connect("http://weibo.com/u/别人的主页id") .cookies(map).method(Method.GET).execute(); String s = res.body(); System.out.println(s); String[] ss = s.split("<script>FM.view"); int i = 0; List<String> list = new ArrayList<>(); for (String x : ss) { if (x.contains("\"html\":\"")) { String value = getHtml(x); list.add(value); System.out.println(value); }
  6. } }
  7. public static String getHtml(String s) { String content = s.split("\"html\":\"")[1] .replaceAll("(\\\\t|\\\\n|\\\\r)", "")                                .replaceAll("\\\\\"", "\"") .replaceAll("\\\\/", "/"); content = content.substring(0, content.length() <= 13 ? content.length() : content.length() - 13); return Native2AsciiUtils.ascii2Native(content); }}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics