Java基于WebMagic爬取某豆瓣電影評論的實(shí)現(xiàn)
搭建爬蟲平臺,爬取某豆瓣電影的評論信息。
準(zhǔn)備webmagic是一個(gè)開源的Java垂直爬蟲框架,目標(biāo)是簡化爬蟲的開發(fā)流程,讓開發(fā)者專注于邏輯功能的開發(fā)。webmagic的核心非常簡單,但是覆蓋爬蟲的整個(gè)流程,也是很好的學(xué)習(xí)爬蟲開發(fā)的材料。
下載WebMagic源碼,或Maven導(dǎo)入,或Jar包方式導(dǎo)入。 碼云地址:https://gitee.com/flashsword20/webmagic
試運(yùn)行搭建好后打開項(xiàng)目, 在 us.codecraft.webmagic.processor.example 包下有幾個(gè)可運(yùn)行的例子,我們可以直接運(yùn)行體驗(yàn)(BaiduBaikePageProcessor 百度百科的這個(gè)比較穩(wěn)定)。
爬到結(jié)果說明沒問題。
接下來我們自己編寫一個(gè)爬取豆瓣評論的爬蟲。
爬取地址:https://movie.douban.com/subject/35096844/reviews?start=0
F12進(jìn)入開發(fā)者模式 分析前端頁面
我們發(fā)現(xiàn)我們需要爬取的評論信息存放在 class=short-content的div 中。
創(chuàng)建一個(gè)豆瓣爬取的類DoubanPageProcessor如下:
package us.codecraft.webmagic.processor.example; import us.codecraft.webmagic.Page;import us.codecraft.webmagic.ResultItems;import us.codecraft.webmagic.Site;import us.codecraft.webmagic.Spider;import us.codecraft.webmagic.processor.PageProcessor; import java.util.List;import java.util.Map; /** * A simple PageProcessor. * 爬取豆瓣某電影的評論 爬取地址:https://movie.douban.com/subject/35096844/reviews?start=0 * * @author [email protected] <br> * @since 0.1.0 */public class DoubanPageProcessor implements PageProcessor { private Site site; public DoubanPageProcessor(String urlPattern) { this.site = Site.me().setRetryTimes(3).setSleepTime(300); // 設(shè)置站點(diǎn)重試次數(shù)3 間隔300ms } @Override public void process(Page page) { page.putField('title', page.getHtml().xpath('//title/text()')); //爬取網(wǎng)頁標(biāo)題// page.putField('html', page.getHtml().toString()); //爬取整個(gè)頁面的html page.putField('titleList', page.getHtml().css('div.short-content', 'text').all()); // 我們要爬取的核心信息內(nèi)容,獲取方式與css選擇器用法一樣// page.putField('content', page.getHtml().smartContent()); } @Override public Site getSite() { //settings return site; } public static void main(String[] args) { Spider spider = Spider.create(new DoubanPageProcessor('https://movie.douban.comd+')); ResultItems resultItems = spider.<ResultItems>get('https://movie.douban.com/subject/35096844/reviews?start=0');// 爬取并獲得爬取結(jié)果 Map<String, Object> map = resultItems.getAll(); for (Map.Entry entry : map.entrySet()) { System.out.println(entry.getKey() + ' : ' + entry.getValue()); //打印爬取的所有內(nèi)容 } List<String> shortList = (List<String>) map.get('titleList'); System.out.println('=====================分隔線===================n短評如下:'); for (int i = 0; i < shortList.size(); i++) { System.out.println(i + '、' + shortList.get(i).trim()); // 打印爬取的評論內(nèi)容 } spider.close(); } }
運(yùn)行結(jié)果如下:
爬取成功。
到此這篇關(guān)于Java基于WebMagic爬取某豆瓣電影評論的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Java WebMagic爬取內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章: