java 爬蟲大型教程(一)
java 爬蟲大型教程(一)
寫在開始前,既然是大型教程,那就從最初始的環境變數開始搭建說起。
電腦環境:我的電腦是macbook pro,因此係統環境變數配置是和Windows不一樣的,如果你的電腦是Windows系統,可以百度下相關環境變數配置。
爬蟲框架:使用的是webmagic,這是國內不錯的爬蟲框架,借鑑於python的scrapy框架。
Java環境搭建
首先提一句,從2019年1月開始更新的版本,jdk8 u201開始對公司使用者來說是收費的!!!因此如果你的公司沒有向oracle申請購買的話,一定要使用jdk8 u191及其以下的jdk版本,不然oracle是可以告你的公司的哦。當然,如果你是個人學習用的話,那就隨便了。
首先我列一下jdk8 u191的下載地址,記得儲存好。地址:
https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html
Java的下載安裝配置就不說了,實在太基礎了,安裝成功後.
MacBook-Pro:~ duke$ java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
maven環境搭建
1.下載安裝包
官方下載地址:https://maven.apache.org/download.cgi
如圖:
2.解壓指定位置
你可以把maven解壓至任何地方,這裡我把maven放在了/Users/duke/Documents/Software
這個資料夾裡,解壓命令不需多言。
我只簡單的描述一下maven,Java程式執行需要各種各樣的jar包,你可能要費心費力的去處理jar包和環境配置問題,但是使用maven就可以解決這個問題。如果你使用過git,就知道程式碼首先是要commit本地倉,然後在push到git遠端倉。maven是相同的道理,它會有個本地倉,如果java程式碼中使用了相關jar包,會首先在本地倉尋找,如果沒找到,會向遠端倉請求,下載到本地倉供使用。
3.環境配置
① 開啟終端 ,輸入vim ~/.bash_profile
② 輸入i進入編輯模式,然後輸入 Maven 的環境變數
export M2_HOME="/Users/duke/Documents/Software/apache-maven-3.6.0"
export PATH="$M2_HOME/bin:$PATH"
③ 編輯完後,按 esc 退出編輯,並輸入 :wq 儲存並退出。
④ 輸入 source ~/.bash_profile 使環境變數生效。
⑤ 輸入 mvn -v 檢視 Maven 否安裝成功。
4.更換maven下載源
① 用IDEA或Eclipse開啟/Users/duke/Documents/Software/apache-maven-3.6.0/conf/settings.xml
② 找到mirrors元素(150行左右), 在它裡面新增子元素mirror
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
IDEA使用maven建立簡單的爬蟲專案
第一步:只是想使用maven來下載相關包,所以不用選中create from archetype,點選next,如下圖:
第二步:GroupId(一般填反轉後公司域名)和ArtifactId(專案名)還有Version,這三個屬性目的是標識你的專案的唯一性,點選next,如下圖:
第三步:以上配置按需修改,一般保持預設,很簡單就是儲存專案的路徑,點選Finish,如下圖:
第四步:在接下來的皮膚中選擇本地的maven/Users/duke/Documents/Software/apache-maven-3.6.0
(如果是第一次建立專案,會有預建立過程,控制檯會顯示在從阿里雲下載模版,去喝杯咖啡等待即可)
第五步:進入了首頁,原始狀態如下圖:
第六步:新增座標:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>us.codecraft</groupId>
<artifactId>webmagic-core</artifactId>
<version>0.7.3</version>
</dependency>
<dependency>
<groupId>us.codecraft</groupId>
<artifactId>webmagic-extension</artifactId>
<version>0.7.3</version>
</dependency>
<dependency>
<groupId>us.codecraft</groupId>
<artifactId>webmagic-extension</artifactId>
<version>0.7.3</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
然後點選右下角import changes,載入完成後,右下角import changes
消失,如下圖:
第七步:配置log4j.properties
我按照我的習慣,新建一個config資料夾,將其標記為source root
配置log4j
# priority :debug<info<warn<error
#you cannot specify every priority with different file for log4j
#log4j.rootLogger=debug,stdout,info,debug,warn,error
#按照你的需要將輸出日誌等級
log4j.rootLogger=warn,error
#console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern= [%d{yyyy-MM-dd HH:mm:ss a}]:%p %l%m%n
#info log
log4j.logger.info=info
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.info.File=./log/info.log
log4j.appender.info.Append=true
log4j.appender.info.Threshold=INFO
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c >> Method: %l ]%n%p:%m%n
#debug log
log4j.logger.debug=debug
log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender
log4j.appender.debug.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.debug.File=./log/debug.log
log4j.appender.debug.Append=true
log4j.appender.debug.Threshold=DEBUG
log4j.appender.debug.layout=org.apache.log4j.PatternLayout
log4j.appender.debug.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c >> Method: %l ]%n%p:%m%n
#warn log
log4j.logger.warn=warn
log4j.appender.warn=org.apache.log4j.DailyRollingFileAppender
log4j.appender.warn.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.warn.File=./log/warn.log
log4j.appender.warn.Append=true
log4j.appender.warn.Threshold=WARN
log4j.appender.warn.layout=org.apache.log4j.PatternLayout
log4j.appender.warn.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c >> Method: %l ]%n%p:%m%n
#error
log4j.logger.error=error
log4j.appender.error = org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.error.File = ./log/error.log
log4j.appender.error.Append = true
log4j.appender.error.Threshold = ERROR
log4j.appender.error.layout = org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c >> Method: %l ]%n%p:%m%n
新建log資料夾存放日誌(這只是本地測試,如果生產中可以將其流入elk)
ok,所有配置完成,可以書寫爬蟲程式碼了!
相關文章
- 網路爬蟲大型教程(二)爬蟲
- (一) 爬蟲教程 |正規表示式爬蟲
- Python爬蟲教程-01-爬蟲介紹Python爬蟲
- 一個很垃圾的整站爬取--Java爬蟲Java爬蟲
- 使用java 爬蟲Java爬蟲
- 《Python3網路爬蟲開發實戰》教程||爬蟲教程Python爬蟲
- Java爬蟲與Python爬蟲的區別?Java爬蟲Python
- Python爬蟲教程-34-分散式爬蟲介紹Python爬蟲分散式
- Python爬蟲教程-30-Scrapy 爬蟲框架介紹Python爬蟲框架
- Python爬蟲與Java爬蟲有何區別?Python爬蟲Java
- Python爬蟲教程-31-建立 Scrapy 爬蟲框架專案Python爬蟲框架
- Java爬蟲翻頁Java爬蟲
- python爬蟲實戰教程-Python爬蟲開發實戰教程(微課版)Python爬蟲
- 網路爬蟲——爬蟲實戰(一)爬蟲
- 神器!五分鐘完成大型爬蟲專案!爬蟲
- Java爬蟲批量爬取圖片Java爬蟲
- Java 爬蟲專案實戰之爬蟲簡介Java爬蟲
- Python爬蟲和java爬蟲哪個效率高Python爬蟲Java
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲
- 爬蟲程式最佳化要點—附Python爬蟲影片教程爬蟲Python
- Java爬蟲入門(一)——專案介紹Java爬蟲
- Python爬蟲教程+書籍分享Python爬蟲
- python網路爬蟲_Python爬蟲:30個小時搞定Python網路爬蟲視訊教程Python爬蟲
- IPIDEA乾貨|Java爬蟲與Python爬蟲的區別IdeaJava爬蟲Python
- Python爬蟲入門教程 50-100 Python3爬蟲爬取VIP視訊-Python爬蟲6操作Python爬蟲
- Java爬蟲-爬取疫苗批次資訊Java爬蟲
- 爬蟲教程——用Scrapy爬取豆瓣TOP250爬蟲
- java爬蟲第一天-bug記錄Java爬蟲
- Python爬蟲教程-05-python爬蟲實現百度翻譯Python爬蟲
- Python爬蟲教程-06-爬蟲實現百度翻譯(requests)Python爬蟲
- 精通Scrapy網路爬蟲【一】第一個爬蟲專案爬蟲
- Python爬蟲教程-26-Selenium + PhantomJSPython爬蟲JS
- [譯] 30 分鐘 Python 爬蟲教程Python爬蟲
- Python爬蟲教程-02-使用urlopenPython爬蟲
- python爬蟲初探--第一個python爬蟲專案Python爬蟲
- 爬蟲筆記(一)爬蟲筆記
- 爬蟲作業一爬蟲
- Python爬蟲教程-23-資料提取-BeautifulSoup4(一)Python爬蟲