Java基于WebMagic爬取某豆瓣電影評論的實現
搭建爬蟲平臺,爬取某豆瓣電影的評論信息。
準備webmagic是一個開源的Java垂直爬蟲框架,目標是簡化爬蟲的開發流程,讓開發者專注于邏輯功能的開發。webmagic的核心非常簡單,但是覆蓋爬蟲的整個流程,也是很好的學習爬蟲開發的材料。
下載WebMagic源碼,或Maven導入,或Jar包方式導入。 碼云地址:https://gitee.com/flashsword20/webmagic
試運行搭建好后打開項目, 在 us.codecraft.webmagic.processor.example 包下有幾個可運行的例子,我們可以直接運行體驗(BaiduBaikePageProcessor 百度百科的這個比較穩定)。
爬到結果說明沒問題。
接下來我們自己編寫一個爬取豆瓣評論的爬蟲。
爬取地址:https://movie.douban.com/subject/35096844/reviews?start=0
F12進入開發者模式 分析前端頁面
我們發現我們需要爬取的評論信息存放在 class=short-content的div 中。
創建一個豆瓣爬取的類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 code4crafter@gmail.com <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); // 設置站點重試次數3 間隔300ms } @Override public void process(Page page) { page.putField('title', page.getHtml().xpath('//title/text()')); //爬取網頁標題// page.putField('html', page.getHtml().toString()); //爬取整個頁面的html page.putField('titleList', page.getHtml().css('div.short-content', 'text').all()); // 我們要爬取的核心信息內容,獲取方式與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');// 爬取并獲得爬取結果 Map<String, Object> map = resultItems.getAll(); for (Map.Entry entry : map.entrySet()) { System.out.println(entry.getKey() + ' : ' + entry.getValue()); //打印爬取的所有內容 } 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()); // 打印爬取的評論內容 } spider.close(); } }
運行結果如下:
爬取成功。
到此這篇關于Java基于WebMagic爬取某豆瓣電影評論的實現的文章就介紹到這了,更多相關Java WebMagic爬取內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
相關文章: