標籤:

新手配置webmagic爬蟲開發環境

以下內容全部是關於如何在windows環境下從零開始配置開發webmagic的環境。

一、配置流程

1. 安裝jdk,這個在甲骨文的官網就可以下載到。然後設置環境變數,這個可自行搜索。

2. 安裝intellij,這個是一個java的IDE,自帶maven,不折騰,個人感覺比eclipse好看簡潔,android studio官方指定IDE,你值得擁有。

3. 新建project,選擇new maven project,起好幾個ID名字,這些是maven的坐標,如果只是練手的code隨便填吧。

4. 在根目錄的pom.xml文件中加入這幾行,沒有學過XML的趁現在去搜一下看看,概念很簡單易懂。注意:如果這篇文章之後有版本更新,以官方文檔提供的為準,當然聰明的朋友應該猜的到該改哪裡。

<dependencies> <dependency> <groupId>us.codecraft</groupId> <artifactId>webmagic-core</artifactId> <version>0.6.1</version> </dependency> <dependency> <groupId>us.codecraft</groupId> <artifactId>webmagic-extension</artifactId> <version>0.6.1</version> </dependency></dependencies>

5. 等待intellij幫你把webmagic的七大姑八大姨還有它自己都下下來。

6. 在External Libraries中找到webmagic-core包,打開,找到processor,然後example,裡面都是webmagic原作者提供的測試用processor(如果你看了文檔你就知道寫好processor就足夠完成一個可以工作的爬蟲了)。

7. 測試文件有三個,我建議跑百度百科那個,另外兩個有某些奇怪的問題。

8. 測試,如果直接輸出結果那恭喜,順便可以把另外兩個也測了。但是我估計你十有八九和我一樣,收到了一個warning,關於log4j的waring,然後才輸出了結果。

9. log4j我也還沒有搞清楚,但是它應該是用來實現程序的log的,也就是說如果沒有它我們沒辦法看到爬蟲的工作日誌,對於開發來說這比較悲劇,所以我們最好還是修好這個warning。

10. 在網上搜索多處得出結論,我們需要一個log4j.properties文件。這個文件決定了log的表現,所以說並沒有標準答案,我附上一份簡單的可以運行的版本。如果有興趣可以搜索log4j的官網,沒記錯的話有很多玩法,比如輸出log到本地文件中。

# Set root logger level to DEBUG and its only appender to A1.log4j.rootLogger=DEBUG, A1# A1 is set to be a ConsoleAppender.log4j.appender.A1=org.apache.log4j.ConsoleAppender# A1 uses PatternLayout.log4j.appender.A1.layout=org.apache.log4j.PatternLayoutlog4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

11. 建好log4j.properties之後,把它放到/src/main/resources文件夾,如果你是用intellij創建的maven project,這個文件夾應該是自帶的,不需要自行創建。

12. 再試試跑跑這幾個測試,這次百度百科應該完美通過了,另外兩個...我們一會再談。

二、一些必要的說明

1. intellij,一個java集成開發環境,官網:IntelliJ IDEA: the Java IDE for Professional Developers | JetBrains,國內下載速度偏慢,我用了度盤離線才下下來,所以順手給你們貼一個分享:pan.baidu.com/s/1c2KlhG 這個軟體的community版是免費的,大家可以放心使用。

2. maven,需要用到別人的包的時候只要填個坐標就行了,很方便的東西,關於這個東西的解釋,還是看官方文檔和它的推薦吧:2.1 使用Maven · WebMagic Documents

三、關於不能正常運行的Example

雖然百度百科的processor能正常運行,但是官方,至少是這個版本的範例在我的intellij上陷入了某種死循環,沒有任何有效輸出。

這裡我從朋友那裡拿到了另一個版本,這個版本就可以正常運行,有心的同學可以拿來和package里的版本對比一下,然後試著找出到底是哪裡出了問題。

import us.codecraft.webmagic.Page;import us.codecraft.webmagic.Site;import us.codecraft.webmagic.Spider;import us.codecraft.webmagic.processor.PageProcessor;public class GithubRepoPageProcessor implements PageProcessor { private Site site = Site.me().setRetryTimes(3).setSleepTime(100); @Override public void process(Page page) { page.addTargetRequests(page.getHtml().links().regex("(https://github\.com/[\w\-]+/[\w\-]+)").all()); page.addTargetRequests(page.getHtml().links().regex("(https://github\.com/[\w\-])").all()); page.putField("author", page.getUrl().regex("https://github\.com/(\w+)/.*").toString()); page.putField("name", page.getHtml().xpath("//h1[@class=entry-title public]/strong/a/text()").toString()); if (page.getResultItems().get("name")==null){ //skip this page page.setSkip(true); } page.putField("readme", page.getHtml().xpath("//div[@id=readme]/tidyText()")); } @Override public Site getSite() { return site; } public static void main(String[] args) { Spider.create(new GithubRepoPageProcessor()).addUrl("https://github.com/code4craft").thread(5).run(); }}

以上是本人對最近地獄一般三天的總結...

題圖:人類衰退之後


推薦閱讀:

面向項目學習編程--之前的廢話
百家爭鳴,誰是王者?
全新的編程入門課程(基於 Python 語言)相關信息公告
加碼編程,少年創學院尋找新業務增長點
Python AI極簡入門4:使用機器學習回歸模型預測房價

TAG:爬蟲 | 編程 |