深爱甜蜜 2018-04-24 02:13 采纳率: 50%
浏览 2477
已结题

java如何爬取微博信息,或者通过接口获取微博信息

项目需求,希望获得几十个新浪微博的关注数、粉丝数以及发布微博的数量,没有提供接口,只能通过网页抓取这些信息。但是我网上查找爬取的方法,许多都过时了不能用,没过时的,也总是报错,请各位大神指导一下。
或者有相关接口,不用网页爬取,也可以。
微博是新浪微博。

  • 写回答

3条回答 默认 最新

  • qq_34386773 2018-04-24 02:16
    关注

    第一步,访问目标网页

    Document doc = Jsoup.connect("http://bbs.my0511.com/f152b").get();

     第二步,根据网页所需内容的特定元素使用jsoup的选择器选取(使用正则表达式效率更高),在这个例子中,目标网页是一个论坛,而我们所需要做的是爬取论坛首页所有帖子的标题名与链接地址。
    

    先打开目标网址,使用谷歌浏览器浏览网页结构,找到结构所对应的内容
    接着选取区域

    Elements links = doc.getElementsByAttributeValue("id","lphymodelsub");

    接下来对选取区域的内容进行获取,保存到数组中

    for (Element link : links) {

    CatchModel c = new CatchModel();
    String linkHref = "http://bbs.my0511.com"+link.parent().attr("href");

    String linkText = link.text();

    c.setText(linkText);
    c.setUrl(linkHref);
    fistCatchList.add(c);
    }

    这样一个简单的抓取就完成了。

    接下来就是新浪微博的抓取,一般的http访问新浪微博网站得到的html都是很简略的,因为新浪微博主页是用js动态生成的并且要进过多次的http请求与验证才能访问成功,所以为了数据抓取的简便,我们走一个后门,也就是访问新浪微博的手机端,weibo.cn进行抓取,但随之而来的一个问题是,新浪微博的访问不管哪一端都需要强制的登陆验证,所以我们需要在http请求的时候附带一个cookie进行用户验证。在网上找了好久使用webcontroller这个开源的爬虫框架,访问很简便,效率也高,那记下来我们就看看如何使用这个框架。

    首先需要导入依赖的包,WebController的ja包与selenium的jar包

    下载地址:http://download.csdn.net/detail/u013407099/9409372

    利用Selenium获取登陆新浪微博weibo.cn的cookie(WeiboCN.java)

    利用WebCollector和获取的cookie爬取新浪微博并抽取数据(WeiboCrawler.java)

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题