java爬取新浪微博带有“展开全文”的完整微博文本
获取新浪微博“展开全文”的完整文本
在个人主页的响应中,这篇微博的表示形式是这样的:
<div class=\"WB_text W_f14\" node-type=\"feed_list_content\" nick-name=\"Vista看天下\">\n 【一堂课让柳传志大呼过瘾,千字长文力挺湖畔大学】11月20日晚,柳传志发布千字长文《为湖畔大学正名》,力挺湖畔大学。他提到,在湖畔大学上课,是找到了“知音”,参加各种论坛、座谈、讲课30余年,印象最深的就是在湖畔大学上课。柳传志发自内心地认为,湖畔大学是在培养扶植真正代表中国的企业家, ...<a target=\"_blank\" href=\"//weibo.com/1323527941/Fw5poB1mb\" class=\"WB_text_opt\" suda-uatrack=\"key=original_blog_unfold&value=click_unfold:4176472908823355:1323527941\" action-type=\"fl_unfold\" action-data=\"mid=4176472908823355&is_settop&is_sethot&is_setfanstop&is_setyoudao\">展开全文<i class=\"W_ficon ficon_arrow_down\">c</i></a> </div>
在点击“展开全文”的时候,可以看到控制台新增了这样一条请求:
请求的格式为:"https://weibo.com/p/aj/mblog/getlongtext?ajwvr=6&"+ action-data +"&__rnd=1511181643288"
rnd代表当前时间的毫秒数,可以不做修改。
在浏览器中复制请求网址,得到如下的页面:
因此利用模拟浏览器访问目标网址的方式,来获取到这段文字。在这里利用JSONObject解析json,利用jsoup解析html。
Document doc = (Document) Jsoup.parse(s);
Elements select = doc.getElementsByClass("WB_text W_f14");//微博个人主页的每一条博文所在的class//遍历每一个元素
for (Element element : select) {if (element.text().contains("展开全文")) {
//获取这个元素所在div中的action-data属性,来拼接需要访问的URL
String attr = element.select(".WB_text_opt").attr("action-data");String longTextUrl = "https://weibo.com/p/aj/mblog/getlongtext?ajwvr=6&"+attr+"&__rnd=1511181740414";
//创建连接
HttpURLConnection conn = DownLoadPage.connectUrl(longTextUrl);// 打开连接conn.connect();StringBuffer sb = new StringBuffer();// 打开这个网站的输入流InputStream inputStream = conn.getInputStream();BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));String temp = null;while ((temp = bufferedReader.readLine()) != null) {sb.append(temp);}
//解码,否则会出现乱码的情况
String decodeUnicode = DownLoadPage.decodeUnicode(sb.toString());//System.out.println(decodeUnicode);JSONObject json = JSONObject.fromObject(decodeUnicode);String ss = json.getString("data");String sss = JSONObject.fromObject(ss).getString("html");Document docc = (Document) Jsoup.parse(sss);System.out.println(docc.text());}else{System.out.println(element.text());}
}
java爬取新浪微博带有“展开全文”的完整微博文本相关推荐
- 爬取新浪微博用户的个人信息和微博内容
#-*- coding:utf-8 -*-""" 爬取新浪微博的用户信息 功能:用户ID 用户名 粉丝数 关注数 微博数 微博内容 网址:www.weibo.cn 数据量 ...
- python爬取指定时间,指定关键词的微博文本
根据关键词爬取微博文本 首先导入所使用的库 from selenium import webdriver from lxml import html from urllib import parse ...
- java爬取新浪微博登陆_30行jsoup代码搞定新浪微博登录抓取爬虫
主要是设置cookies 想知道方法的朋友可以留言哦 爬虫问题都可以探讨哦 import java.io.IOException; import java.util.HashMap; import j ...
- Java开源爬虫框架WebCollector—爬取新浪微博
本教程给出了一个使用WebCollector模拟登陆并爬取新浪微博的示例.登录过程中会出现验证码.如图所示: 1.依赖jar包: 本教程需要两套jar包,WebCollector核心jar包和sele ...
- 从新浪微博搜索站点中超大批量爬取新浪微博内容方法和核心源码(java)
最近做项目需要从新浪微博中大批量爬取新浪微博数据,当然大家熟知的方法就是使用API来获取数据,但是这样有个限制,只能搜索相应用户的home_timeline,不能按关键字大批量(几十万甚至百万千万级别 ...
- 爬取新浪微博新闻,包括模拟登陆,数据存储等!最适合新手的教程
写在最开头 该程序主要是为爬取新浪微博,想要搜索的信息,主要报错的信息为文本,其他元素未涉及,此外微博博主信息,笔者也不关注,时间等信息同样不关注,主要目的就是获取文本信息.因此,本着对读者同样同样也 ...
- 爬取新浪微博新闻(selenium),包括模拟登陆,数据存储等(适合初学者)
爬取新浪微博(模拟登陆,数据存储) 写在最开头 下载浏览器驱动 测试驱动是否匹配/font> 模拟登陆 分析待爬取页面信息 保存数据 程序github地址 写在最开头 该程序主要是为爬取新浪微博 ...
- Python爬虫与信息提取(五)爬虫实例:爬取新浪微博热搜排名
经过一段时间的Python网络爬虫学习,今天自己摸索制作了一个能够爬取新浪微博实时热搜排名的小爬虫 1.效果: 2.制作过程中遇到的问题: (1)一开始研究微博热搜页面的源代码时忽略了<tbod ...
- python爬虫——scrapy+selenium爬取新浪微博及评论
本文主要对爬取过程中所用到的知识做简单总结,最后有项目链接. 一.项目简介 本项目利用python的scrapy框架+selenium模拟登陆微博来爬取带有关键字的微博及微博下面的评论(1 .2级评论 ...
最新文章
- 聊一聊我认识的Linux系统
- 跨链原子互换时代来临,BCH潜力无限!
- Android渗透测试Android渗透测试入门教程大学霸
- python简单入门代码-Python入门 | IDLE的介绍和使用方法
- 使用正则移除尖括号中的指定子字符串
- hdu 4831(线段树---待解决)
- qt 在点击菜单下的动作之后获取该菜单的名称
- Java Hessian小试(转)
- java数组是否包含某字符串_js判断数组是否包含某个字符串变量的实例
- 201521123017 《Java程序设计》第4周学习总结
- 最不像地球的45个地方,你见过几个?
- first review of team blog(4.26)
- paginatorhelper ajax,Bootstrap Paginator+PageHelper实现分页效果_蓝瞳_前端开发者
- IDEA 设置护眼色RGB值
- struts+spring+mybatis介绍
- 7个Python实战项目(附源码),拿走就用
- c2000 电阻采样_常用超低阻值采样电阻阻值一览表
- DRP项目知识点一: 数据库连接-封装Connection
- 【Unity3D】资源文件 ③ ( Unity 资源包简介 | 导出 Unity 资源包 | 导出资源包的包含依赖选项 | 导入 Unity 资源包 | Unity 资源商店 )
- Node的数据库编程