From d1d4b0c8ef6a807453f02799d7941b976158f7f8 Mon Sep 17 00:00:00 2001 From: JiangYouhan <3080587852@qq.com> Date: Sun, 22 Mar 2026 17:33:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=20'w3'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- w3/DoubanCrawler.class | Bin 0 -> 3222 bytes w3/DoubanCrawler.java | 80 ++++++++++++++++++++++++++++++++++++++++ w3/Main.class | Bin 0 -> 2229 bytes w3/assistance_record.md | 66 +++++++++++++++++++++++++++++++++ w3/crawler_result.txt | Bin 0 -> 21988 bytes 5 files changed, 146 insertions(+) create mode 100644 w3/DoubanCrawler.class create mode 100644 w3/DoubanCrawler.java create mode 100644 w3/Main.class create mode 100644 w3/assistance_record.md create mode 100644 w3/crawler_result.txt diff --git a/w3/DoubanCrawler.class b/w3/DoubanCrawler.class new file mode 100644 index 0000000000000000000000000000000000000000..05d87cab80d6da64e8912f197ccfed2709ec85b3 GIT binary patch literal 3222 zcmai0>w6T{9ez);yR#XF1U5lfB@&U#h9oRhKm!+L?uC1cL)cb$R}9J7L1Qhs1KfiJKrGtxP_Y-b|y zEN3R)gcfX2uu($_t*acFnD+y-MEh=q?re%gEmuEGxq#B9QOc*l9clR{fnAxk+Upop zu?1-bH*2^BTbF`btyVxOOCz=;y{@BmO2w_%rl3Q^ZP+f*QE*GTXF7pl>jlp^W1F5H z;xrrt<)Z{lVBL%v47i0#iChBNdRj+aZ$>}myOpx;xJA>~m-zEZ>=0O=^($d+dMx6i zVi$HR$Y|)q9)T_YOO}cBO*_n}egmTspFU`t(n&wBq8mL5vKn;UA&_1+@i|U`Bwg~1 z!1V-f%G5v)0T`*R=htB`?ozN%!`=9TKx(;`mRN}Ttl^KFXNeDM?zoh=SHpeC3B;Um zxot`Jib~BZ*w3QEd!a zo{X~R1|_#DS1h*%32>z?1x6(cnpbHcfEUvy)&DwMet&%5)N^1%xggIICeE zUzHgs+ZMTY*9-O0wZlVN`I?5WODig^^i_gc*YoA_H#K}qE^AyqT$#2lf7T4W`i_S0 z%8lmbjR7MtrOeYBz9+Y2fSim426&F`6(uLjp5%}{;Z#aA@EpFc;0GFhh###2O*VjS zGIe3)FMZV=d;`+tk2U-RKV_%T# zkNhi3buVf7#S$13l~T#@<{8exzKOvTM~{p$mbDmi7%m+wQ-)n(%)b%XKFeY2=X8CV z{g*9}QLz@<%PljNF?v!rh*AZ1%F&|ii{k(zC(Z}tQp4$DjqHFTdQ~f4Ms>W4XYDw#VeRYmP}A;)u_r! zpqWUHo4^k|qdaD^l8Sy3Zwc(VF&GDUFnhuMB8k5ckdNMa?ZcN}|JS)UKYadtu0ymW z@V1I~@HYj2m*?w01a>SZ)^bj}bEY13TXfhD83m4iX6~hxeNbbJJR3HgqHX#+Mwy>V zIlnfoD^^wsPR^IjI_xW(YiV|_Rnc$Q_5_b7f~k!-j_LK=hVPrq+hu{BYhtSBs)B`8 zb9I$-wWv5UqPTb?=;h@KyqVmLU*cDMzs#=&{2Gmj?iB2{jHK=ncpv#(a!)#0#r?UabkicV?sU@?^f%zx zg=_z8!^mYkbOEZAtYYG+MseZVbKQTXYbE$N&6A`7(&Zs+y2%^IEcdufK;C*SV zEA>bfkB;{&VoP^V6(_1FR59D#lbWldR7JTf<#Rt5OUD*5l8!|jA)1vc&PX)hQ(l4I zolZ3F4P~Ds8H>nokc>y3F2`GM=sCc?oc$yO~s1>gSS+ z1{Tpm=_TJ@3^6~47g3uxJG?;R>!I{a>-t BTL%CD literal 0 HcmV?d00001 diff --git a/w3/DoubanCrawler.java b/w3/DoubanCrawler.java new file mode 100644 index 0000000..bf8200d --- /dev/null +++ b/w3/DoubanCrawler.java @@ -0,0 +1,80 @@ +package com.rental.crawler; + +import com.rental.crawler.model.Book; +import com.rental.crawler.util.HttpUtil; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +public class DoubanCrawler { + private static final String BASE_URL = "https://book.douban.com/tag/论文"; + + public List crawl(int pageCount) throws IOException { + List books = new ArrayList<>(); + + for (int page = 0; page < pageCount; page++) { + String url = BASE_URL + "?start=" + (page * 20); + System.out.println("正在爬取: " + url); + + Document doc = HttpUtil.getDocument(url); + + Elements bookElements = doc.select(".subject-item"); + for (Element bookElement : bookElements) { + Book book = parseBook(bookElement); + if (book != null) { + books.add(book); + } + } + + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + return books; + } + + private Book parseBook(Element bookElement) { + Book book = new Book(); + + Element titleElement = bookElement.selectFirst(".info h2 a"); + if (titleElement != null) { + book.setTitle(titleElement.text().trim()); + book.setUrl(titleElement.attr("href")); + } + + Element infoElement = bookElement.selectFirst(".info .pub"); + if (infoElement != null) { + String info = infoElement.text().trim(); + String[] parts = info.split("/"); + if (parts.length >= 4) { + book.setAuthors(parts[0].trim()); + book.setPublisher(parts[1].trim()); + book.setPublishDate(parts[2].trim()); + book.setPrice(parts[3].trim()); + } + } + + Element ratingElement = bookElement.selectFirst(".info .rating_nums"); + if (ratingElement != null) { + try { + book.setRating(Double.parseDouble(ratingElement.text().trim())); + } catch (NumberFormatException e) { + book.setRating(0.0); + } + } + + Element summaryElement = bookElement.selectFirst(".info p"); + if (summaryElement != null) { + book.setSummary(summaryElement.text().trim()); + } + + return book; + } +} diff --git a/w3/Main.class b/w3/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..b07efa6fffe1bd8e09610e1b22a36308b24f4915 GIT binary patch literal 2229 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 F{{uI?`u6|; literal 0 HcmV?d00001