摘要:引入的包用于解析开始分析网站捧腹网段子首先找到我们需要的内容作者标题和正文查看其元素,我这里查看的是标题标签知道其结构之后,就可以获取我们想要的内容了正在爬取第页内容。。。将内容写入磁盘参考文章爬虫入门一爬取糗百
先上效果图:
准备工作:
/** * 建立http连接 */ public static String Connect(String address) { HttpURLConnection conn = null; URL url = null; InputStream in = null; BufferedReader reader = null; StringBuffer stringBuffer = null; try { url = new URL(address); conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5000); conn.setReadTimeout(5000); conn.setDoInput(true); conn.connect(); in = conn.getInputStream(); reader = new BufferedReader(new InputStreamReader(in)); stringBuffer = new StringBuffer(); String line = null; while ((line = reader.readLine()) != null) { stringBuffer.append(line); } } catch (Exception e) { e.printStackTrace(); } finally { conn.disconnect(); try { in.close(); reader.close(); } catch (Exception e) { e.printStackTrace(); } } return stringBuffer.toString(); }
/** * 用于将内容写入到磁盘文件 * @param allText */ private static void writeToFile(String allText) { System.out.println("正在写入。。。"); BufferedOutputStream bos = null; try { File targetFile = new File("/Users/shibo/tmp/pengfu.txt"); File fileDir = targetFile.getParentFile(); if (!fileDir.exists()) { fileDir.mkdirs(); } if (!targetFile.exists()) { targetFile.createNewFile(); } bos = new BufferedOutputStream(new FileOutputStream(targetFile, true)); bos.write(allText.getBytes()); } catch (IOException e) { e.printStackTrace(); } finally { if (null != bos) { try { bos.close(); } catch (IOException e) { e.printStackTrace(); } } } System.out.println("写入完毕。。。"); }
引入jsoup的jar包(用于解析dom):
org.jsoup jsoup 1.11.2
开始分析网站:
捧腹网段子
首先找到我们需要的内容(作者、标题和正文)
查看其元素,我这里查看的是标题标签:
知道其结构之后,就可以获取我们想要的内容了:
public static void main(String[] args) { StringBuilder allText = new StringBuilder(); for (int i = 1; i <= 50; i++) { System.out.println("正在爬取第" + i + "页内容。。。"); // 建立连接,获取网页内容 String html = ConnectionUtil.Connect("https://www.pengfu.com/xiaohua_" + i + ".html"); // 将内容转换成dom格式,方便操作 Document doc = Jsoup.parse(html); // 获取网页内所有标题节点 Elements titles = doc.select("h1.dp-b"); for (Element titleEle : titles) { Element parent = titleEle.parent(); // 标题内容 String title = titleEle.getElementsByTag("a").text(); // 标题对应的作者 String author = parent.select("p.user_name_list > a").text(); // 标题对应的正文 String content = parent.select("div.content-img").text(); // 将内容格式化 allText.append(title) .append(" 作者:").append(author) .append(" ").append(content) .append(" ").append(" "); } allText.append("-------------第").append(i).append("页-------------").append(" "); System.out.println("第" + i + "页内容爬取完毕。。。"); } //将内容写入磁盘 Test.writeToFile(allText.toString()); }
参考文章:Python 爬虫入门(一)——爬取糗百
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/76657.html
摘要:将内容格式化作者第页第页内容爬取完毕。。。 前文链接 : java爬取捧腹网段子 上一篇文章讲述了如何使用Java爬取内容并写入文件,但是速度堪忧,今天将代码搞成了多线程版本,具体方式如下: 新建一个splider类,继承callable接口,用于存放我们需要多线程执行的逻辑:将上一篇文章中爬取网页内容的代码搬过来 public class Splider implements Cal...
摘要:通过本文的学习,可以快速掌握网络爬虫基础,结合实战练习,写出一些简单的爬虫项目。从技术手段来说,网络爬虫有多种实现方案,如。二网络爬虫技术基础在本次课中,将使用技术手段进行项目的编写。 摘要:本文详细讲解了python网络爬虫,并介绍抓包分析等技术,实战训练三个网络爬虫案例,并简单补充了常见的反爬策略与反爬攻克手段。通过本文的学习,可以快速掌握网络爬虫基础,结合实战练习,写出一些简单的...
摘要:爬取糗百内容代码地址微信公众号智能制造社区,欢迎关注。爬虫程序一般是通过模拟浏览器对相应发出请求,获取数据,并通过正则等手段匹配出页面中我们所需的数据。库基本介绍是学习爬虫的一大利器。 爬取糗百内容 GitHub 代码地址https://github.com/injetlee/Python/blob/master/qiubai_crawer.py 微信公众号:【智能制造社区】,欢迎关注...
摘要:我们的小项目就初始化成功了,就可以认真思考代码了首先分析糗事百科我们打开糗事百科会发现它的还是很简单,由于我们只是爬取段子所以如下,就是页数。 Node命令行工具开发【看段子】 你有没有上班想看笑话却又怕领导发现的经历?现在我们就用几十行代码写一个命令行看笑话段子的小程序,从此无需担心领导的视察。这篇文章和上一篇差不多都是命令行小工具开发,不过本篇更偏向于小爬虫的开发 总览:命令行看段...
摘要:由于最新的视频整顿风波,内涵段子被迫关闭,广大段友无家可归,但是最近发现了一个段友的,版本更新也挺快,正在号召广大段友回家,如下图,有兴趣的可以下载看看我不是打广告的,没收广告费的同时,之前同事也发了一个贴吧的段子聚居地,客官稍等,马上奉上 由于最新的视频整顿风波,内涵段子APP被迫关闭,广大段友无家可归,但是最近发现了一个段友的app,版本更新也挺快,正在号召广大段友回家,如下图,有...
阅读 6911·2021-09-22 15:08
阅读 1919·2021-08-24 10:03
阅读 2436·2021-08-20 09:36
阅读 1315·2020-12-03 17:22
阅读 2473·2019-08-30 15:55
阅读 903·2019-08-29 16:13
阅读 3053·2019-08-29 12:41
阅读 3248·2019-08-26 12:12