摘要:引入的包用于解析開始分析網站捧腹網段子首先找到我們需要的內容作者標題和正文查看其元素,我這里查看的是標題標簽知道其結構之后,就可以獲取我們想要的內容了正在爬取第頁內容。。。將內容寫入磁盤參考文章爬蟲入門一爬取糗百
先上效果圖:
準備工作:
/** * 建立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 爬蟲入門(一)——爬取糗百
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/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,版本更新也挺快,正在號召廣大段友回家,如下圖,有...
閱讀 6927·2021-09-22 15:08
閱讀 1930·2021-08-24 10:03
閱讀 2443·2021-08-20 09:36
閱讀 1320·2020-12-03 17:22
閱讀 2479·2019-08-30 15:55
閱讀 911·2019-08-29 16:13
閱讀 3059·2019-08-29 12:41
閱讀 3254·2019-08-26 12:12