摘要:引入的包用于解析開(kāi)始分析網(wǎng)站捧腹網(wǎng)段子首先找到我們需要的內(nèi)容作者標(biāo)題和正文查看其元素,我這里查看的是標(biāo)題標(biāo)簽知道其結(jié)構(gòu)之后,就可以獲取我們想要的內(nèi)容了正在爬取第頁(yè)內(nèi)容。。。將內(nèi)容寫入磁盤參考文章爬蟲(chóng)入門一爬取糗百
先上效果圖:
準(zhǔn)備工作:
/** * 建立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(); }
/** * 用于將內(nèi)容寫入到磁盤文件 * @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
開(kāi)始分析網(wǎng)站:
捧腹網(wǎng)段子
首先找到我們需要的內(nèi)容(作者、標(biāo)題和正文)
查看其元素,我這里查看的是標(biāo)題標(biāo)簽:
知道其結(jié)構(gòu)之后,就可以獲取我們想要的內(nèi)容了:
public static void main(String[] args) { StringBuilder allText = new StringBuilder(); for (int i = 1; i <= 50; i++) { System.out.println("正在爬取第" + i + "頁(yè)內(nèi)容。。。"); // 建立連接,獲取網(wǎng)頁(yè)內(nèi)容 String html = ConnectionUtil.Connect("https://www.pengfu.com/xiaohua_" + i + ".html"); // 將內(nèi)容轉(zhuǎn)換成dom格式,方便操作 Document doc = Jsoup.parse(html); // 獲取網(wǎng)頁(yè)內(nèi)所有標(biāo)題節(jié)點(diǎn) Elements titles = doc.select("h1.dp-b"); for (Element titleEle : titles) { Element parent = titleEle.parent(); // 標(biāo)題內(nèi)容 String title = titleEle.getElementsByTag("a").text(); // 標(biāo)題對(duì)應(yīng)的作者 String author = parent.select("p.user_name_list > a").text(); // 標(biāo)題對(duì)應(yīng)的正文 String content = parent.select("div.content-img").text(); // 將內(nèi)容格式化 allText.append(title) .append(" 作者:").append(author) .append(" ").append(content) .append(" ").append(" "); } allText.append("-------------第").append(i).append("頁(yè)-------------").append(" "); System.out.println("第" + i + "頁(yè)內(nèi)容爬取完畢。。。"); } //將內(nèi)容寫入磁盤 Test.writeToFile(allText.toString()); }
參考文章:Python 爬蟲(chóng)入門(一)——爬取糗百
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/76657.html
摘要:將內(nèi)容格式化作者第頁(yè)第頁(yè)內(nèi)容爬取完畢。。。 前文鏈接 : java爬取捧腹網(wǎng)段子 上一篇文章講述了如何使用Java爬取內(nèi)容并寫入文件,但是速度堪憂,今天將代碼搞成了多線程版本,具體方式如下: 新建一個(gè)splider類,繼承callable接口,用于存放我們需要多線程執(zhí)行的邏輯:將上一篇文章中爬取網(wǎng)頁(yè)內(nèi)容的代碼搬過(guò)來(lái) public class Splider implements Cal...
摘要:通過(guò)本文的學(xué)習(xí),可以快速掌握網(wǎng)絡(luò)爬蟲(chóng)基礎(chǔ),結(jié)合實(shí)戰(zhàn)練習(xí),寫出一些簡(jiǎn)單的爬蟲(chóng)項(xiàng)目。從技術(shù)手段來(lái)說(shuō),網(wǎng)絡(luò)爬蟲(chóng)有多種實(shí)現(xiàn)方案,如。二網(wǎng)絡(luò)爬蟲(chóng)技術(shù)基礎(chǔ)在本次課中,將使用技術(shù)手段進(jìn)行項(xiàng)目的編寫。 摘要:本文詳細(xì)講解了python網(wǎng)絡(luò)爬蟲(chóng),并介紹抓包分析等技術(shù),實(shí)戰(zhàn)訓(xùn)練三個(gè)網(wǎng)絡(luò)爬蟲(chóng)案例,并簡(jiǎn)單補(bǔ)充了常見(jiàn)的反爬策略與反爬攻克手段。通過(guò)本文的學(xué)習(xí),可以快速掌握網(wǎng)絡(luò)爬蟲(chóng)基礎(chǔ),結(jié)合實(shí)戰(zhàn)練習(xí),寫出一些簡(jiǎn)單的...
摘要:爬取糗百內(nèi)容代碼地址微信公眾號(hào)智能制造社區(qū),歡迎關(guān)注。爬蟲(chóng)程序一般是通過(guò)模擬瀏覽器對(duì)相應(yīng)發(fā)出請(qǐng)求,獲取數(shù)據(jù),并通過(guò)正則等手段匹配出頁(yè)面中我們所需的數(shù)據(jù)。庫(kù)基本介紹是學(xué)習(xí)爬蟲(chóng)的一大利器。 爬取糗百內(nèi)容 GitHub 代碼地址https://github.com/injetlee/Python/blob/master/qiubai_crawer.py 微信公眾號(hào):【智能制造社區(qū)】,歡迎關(guān)注...
摘要:我們的小項(xiàng)目就初始化成功了,就可以認(rèn)真思考代碼了首先分析糗事百科我們打開(kāi)糗事百科會(huì)發(fā)現(xiàn)它的還是很簡(jiǎn)單,由于我們只是爬取段子所以如下,就是頁(yè)數(shù)。 Node命令行工具開(kāi)發(fā)【看段子】 你有沒(méi)有上班想看笑話卻又怕領(lǐng)導(dǎo)發(fā)現(xiàn)的經(jīng)歷?現(xiàn)在我們就用幾十行代碼寫一個(gè)命令行看笑話段子的小程序,從此無(wú)需擔(dān)心領(lǐng)導(dǎo)的視察。這篇文章和上一篇差不多都是命令行小工具開(kāi)發(fā),不過(guò)本篇更偏向于小爬蟲(chóng)的開(kāi)發(fā) 總覽:命令行看段...
摘要:由于最新的視頻整頓風(fēng)波,內(nèi)涵段子被迫關(guān)閉,廣大段友無(wú)家可歸,但是最近發(fā)現(xiàn)了一個(gè)段友的,版本更新也挺快,正在號(hào)召?gòu)V大段友回家,如下圖,有興趣的可以下載看看我不是打廣告的,沒(méi)收廣告費(fèi)的同時(shí),之前同事也發(fā)了一個(gè)貼吧的段子聚居地,客官稍等,馬上奉上 由于最新的視頻整頓風(fēng)波,內(nèi)涵段子APP被迫關(guān)閉,廣大段友無(wú)家可歸,但是最近發(fā)現(xiàn)了一個(gè)段友的app,版本更新也挺快,正在號(hào)召?gòu)V大段友回家,如下圖,有...
閱讀 7016·2021-09-22 15:08
閱讀 2045·2021-08-24 10:03
閱讀 2531·2021-08-20 09:36
閱讀 1470·2020-12-03 17:22
閱讀 2536·2019-08-30 15:55
閱讀 990·2019-08-29 16:13
閱讀 3140·2019-08-29 12:41
閱讀 3331·2019-08-26 12:12