这几天学习了一下Java爬虫的知识,分享并记录一下;

写一个可以爬取博客园十天推荐排行的文章列表
通过浏览器查看下一页点击请求,可以发现

在点击下一页的时候是执行的
post请求,请求地址为
http://www.cnblogs.com/mvc/AggSite/PostList.aspx
请求参数为图片下部标红的部分;知道这些就可以调用httpclient的API接口来实现请求了,代码如下

    // SendPost,cnblog專用public static String SendPostCnBlog(String url, JSONObject jo) {CloseableHttpClient client = HttpClients.createDefault();String result = "查询失败";try {HttpPost httpPost = new HttpPost(url);StringEntity entity = new StringEntity(jo.toString(), "utf-8");// 解决中文乱码问题entity.setContentEncoding("UTF-8");entity.setContentType("application/json");httpPost.setEntity(entity);HttpResponse resp = client.execute(httpPost);if (resp.getStatusLine().getStatusCode() == 200) {HttpEntity he = resp.getEntity();result = EntityUtils.toString(he, "UTF-8");}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {client.close();} catch (Exception e) {e.printStackTrace();}}return result;}
    //cnblog -post请求public static JSONObject jsonMaker(int i){JSONObject jo = new JSONObject();jo.put("CategoryType", "TopDiggs");jo.put("ParentCategoryId", 0);jo.put("CategoryId", 0);jo.put("PageIndex", i);jo.put("TotalPostCount", 0);jo.put("ItemListActionName", "PostList");return jo;}

通过上面的方法我们可以获取数据,但是这些数据需要进行格式化;

通过浏览器审查元素可以看到每一块文章都是在post_item_body这个div块中;里面包含了文章表体以及链接地址,知道了这些就可以利用Jsoup的API接口来帮我们完成解析了,代码如下

    // 获取cnblog详细内容public static ArrayList<Cnblog> GetContens(String content) {ArrayList<Cnblog> results = new ArrayList<Cnblog>();Document doc = Jsoup.parse(content);Elements items = doc.getElementsByClass("post_item_body");for (Element item : items) {Element h2TagEle = item.getElementsByTag("h3").first(); // 推荐内容标题元素Element aTagEl = h2TagEle.getElementsByTag("a").first(); // 推荐内容的Url超链接元素String href = aTagEl.attr("href");System.out.println(aTagEl.text() + "  " + href);}return results;}

好了,这就是最后的运行结果;

参考资料:

使用爬虫来获取知乎的编辑推荐内容
httpclient模拟post请求json封装表单数据

重点就是要知道如何模拟请求,然后就是如何解析获取的返回数据

java爬虫之爬取博客园推荐文章列表相关推荐

  1. java 使用webmagic 爬虫框架爬取博客园数据

    java 使用webmagic 爬虫框架爬取博客园数据存入数据库 学习记录   webmagic简介: WebMagic是一个简单灵活的Java爬虫框架.你可以快速开发出一个高效.易维护的爬虫. ht ...

  2. webmagic 获取文本_webmagic爬取博客园所有文章

    最近学习了下webmagic,学webmagic是因为想折腾下爬虫,但是自己学java的,又不想太费功夫,所以webmagic是比较好的选择了. 写了几个demo,源码流程大致看了一遍.想着把博客园的 ...

  3. Java爬虫-WebMagic爬取博客图片(好色龍的網路觀察日誌)

    WebMagic爬取博客图片 最近在学习java爬虫,接触到WebMagic框架,正好拿我喜爱的博客来练习,希望龙哥(博主)不要责备我~~ 博客链接: 好色龍的網路觀察日誌 ,超级有趣的翻译漫画,持续 ...

  4. 爬取博客园首页并定时发送到微信

    应女朋友要求,为了能及时掌握技术动向,特意写了这个爬虫,每天定时爬取博客园首页并发送至微信. 环境: Python3.4 第三方库 Requests:向服务器发送请求 BeautifulSoup4:解 ...

  5. .NET Core 实现定时抓取博客园首页文章信息并发送到邮箱

    前言 大家好,我是晓晨.许久没有更新博客了,今天给大家带来一篇干货型文章,一个每隔5分钟抓取博客园首页文章信息并在第二天的上午9点发送到你的邮箱的小工具.比如我在2018年2月14日,9点来到公司我就 ...

  6. .net core 实现简单爬虫—抓取博客园的博文列表

    一.介绍一个Http请求框架HttpCode.Core HttpCode.Core 源自于HttpCode(传送门),不同的是 HttpCode.Core是基于.net standard 2.0实现的 ...

  7. 【Python3 爬虫】13_爬取博客园首页所有文章

    首先,我们确定博客园首页地址为:https://www.cnblogs.com/ 我们打开可以看到有各种各样的文章在首页,如下图: 我们以上图标记的文章为例子吧!打开网页源码,搜索Docker,搜索结 ...

  8. 基于webmagic实现爬取博客园的所有精品文章

    最近有一些工作上的需要,需要接触到爬虫来爬取数据.之前有使用过Python实现一个很简单的爬虫Demo,这次由于公司使用的是Java爬虫,基于webmagic框架去实现的爬虫.于是就参考了资料自己学习 ...

  9. python读取数据库数据、并保存为docx_Python - 爬取博客园某一目录下的随笔 - 保存为docx...

    1 #coding:utf-8 2 importrequests3 from bs4 importBeautifulSoup4 importMySQLdb5 6 7 defget_html(url): ...

最新文章

  1. k8s源码架构目录分析
  2. 线程安全的理论讲解(volatile)
  3. 【oracle】日期加减计算
  4. 【windows8开发】C++开发WinRT组件和JS调用
  5. Java反射xml数据类
  6. Java ClassLoader getSystemClassLoader()方法与示例
  7. 基于Java+SpringBoot+vue+element实现物流管理系统
  8. 一道面试题:猫大叫了一声...
  9. HDU1012 Calculate e
  10. jmeter - 录制app接口
  11. Nginx for Zabbix 3.2官方监控模板
  12. Jquery.EasyUI datebox控件
  13. 安规的XY电容器件作用
  14. 密西根州立大学副教授汤继良:我的人生总有神奇的GPS
  15. 苹果支付Java后台总结
  16. 2016年Kubernetes(k8s)大事记
  17. 构造Linux的图形化安装程序(4)(转)
  18. C语言网络聊天室程序
  19. iwebShop--基本操作
  20. 正点原子STM32F103精英版学习笔记(二)

热门文章

  1. NOIP2016 买铅笔【模拟】
  2. 搜索引擎免费登录入口
  3. BitLocker恢复
  4. C语言:数组奇偶排序,奇数从小到大,偶数从大到小;输出
  5. 彻底弄懂oracle硬解析、软解析、软软解析
  6. 【5G核心网】5G概念以及名词缩写解释
  7. 【C进阶】之结构体类型( struct)
  8. python生成随机的测验试卷_python生成随机的测验试卷文件
  9. Panda3D设置窗体长宽及其他参数
  10. C语言利用泰勒级数sin(X)