日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql git 获取 稳定版本 源码_webmagic新版文档(更新中)

發(fā)布時間:2024/9/3 数据库 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql git 获取 稳定版本 源码_webmagic新版文档(更新中) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

WebMagic in Action

WebMagic是一個簡單靈活、便于二次開發(fā)的爬蟲框架。除了可以便捷的實現(xiàn)一個爬蟲,WebMagic還提供多線程功能,以及基本的分布式功能。

你可以直接使用WebMagic進(jìn)行爬蟲開發(fā),也可以定制WebMagic以適應(yīng)復(fù)雜項目的需要。

1. 在項目中使用WebMagic

WebMagic主要包含兩個jar包:webmagic-core-{version}.jar和webmagic-extension-{version}.jar。在項目中添加這兩個包的依賴,即可使用WebMagic。

1.1 使用Maven

WebMagic基于Maven進(jìn)行構(gòu)建,推薦使用Maven來安裝WebMagic。在項目中添加以下坐標(biāo)即可:

us.codecraft

webmagic-extension

0.4.3

WebMagic使用slf4j-log4j12作為slf4j的實現(xiàn).如果你自己定制了slf4j的實現(xiàn),請在項目中去掉此依賴。

us.codecraft

webmagic-extension

0.4.3

org.slf4j

slf4j-log4j12

1.2 不使用Maven

不使用maven的用戶,可以下載附帶二進(jìn)制jar包的版本(感謝oschina):

git clone http://git.oschina.net/flashsword20/webmagic.git

在lib目錄下,有項目依賴的所有jar包,直接在IDE里,將這些jar添加到Libraries即可。

1.3 第一個項目

在你的項目中添加了WebMagic的依賴之后,即可開始第一個爬蟲的開發(fā)了!我們這里拿一個抓取Github信息的例子:

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.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();

}

}

點擊main方法,選擇“運行”,你會發(fā)現(xiàn)爬蟲已經(jīng)可以正常工作了!

2.下載和編譯源碼

WebMagic是一個純Java項目,如果你熟悉Maven,那么下載并編譯源碼是非常簡單的。如果不熟悉Maven也沒關(guān)系,這部分會介紹如何在Eclipse里導(dǎo)入這個項目。

2.1 下載源碼

WebMagic目前有兩個倉庫:

github上的倉庫保存最新版本,所有issue、pull request都在這里。大家覺得項目不錯的話別忘了去給個star哦!

此倉庫包含所有編譯好的依賴包,只保存項目的穩(wěn)定版本,最新版本仍在github上更新。oschina在國內(nèi)比較穩(wěn)定,主要作為鏡像。

無論在哪個倉庫,使用

git clone https://github.com/code4craft/webmagic.git

或者

git clone http://git.oschina.net/flashsword20/webmagic.git

即可下載最新代碼。

如果你對git本身使用也不熟悉,建議看看@黃勇的 從 Git@OSC 下載 Smart 源碼

2.2 導(dǎo)入項目

Intellij Idea默認(rèn)自帶Maven支持,import項目時選擇Maven項目即可。

2.2.1 使用m2e插件

安裝后,在File->Import中選擇Maven->Existing Maven Projects即可導(dǎo)入項目。

導(dǎo)入后看到項目選擇界面,點擊finish即可。

2.2.2 使用Maven Eclipse插件

如果沒有安裝m2e插件,只要你安裝了Maven,也是比較好辦的。在項目根目錄下使用命令:

mvn eclipse:eclipse

生成maven項目結(jié)構(gòu)的eclipse配置文件,然后在File->Import中選擇General->Existing Projects into Workspace即可導(dǎo)入項目。

導(dǎo)入后看到項目選擇界面,點擊finish即可。

2.3 編譯和執(zhí)行源碼

導(dǎo)入成功之后,應(yīng)該就沒有編譯錯誤了!此時你可以運行一下webmagic-core項目中自帶的exmaple:"us.codecraft.webmagic.processor.example.GithubRepoPageProcessor"。

同樣,看到控制臺輸出如下,則表示源碼編譯和執(zhí)行成功了!

3. 基本的爬蟲

3.1 實現(xiàn)PageProcessor

在WebMagic里,實現(xiàn)一個基本的爬蟲只需要編寫一個類,實現(xiàn)PageProcessor接口即可。這個類基本上包含了抓取一個網(wǎng)站,你需要寫的所有代碼。

以之前的GithubRepoPageProcessor為例,我將PageProcessor的定制分為三個部分:

public class GithubRepoPageProcessor implements PageProcessor {

// 部分一:抓取網(wǎng)站的相關(guān)配置,包括編碼、抓取間隔、重試次數(shù)等

private Site site = Site.me().setRetryTimes(3).setSleepTime(1000);

@Override

// process是定制爬蟲邏輯的核心接口,在這里編寫抽取邏輯

public void process(Page page) {

// 部分二:定義如何抽取頁面信息,并保存下來

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()"));

// 部分三:從頁面發(fā)現(xiàn)后續(xù)的url地址來抓取

page.addTargetRequests(page.getHtml().links().regex("(https://github\\.com/\\w+/\\w+)").all());

}

@Override

public Site getSite() {

return site;

}

public static void main(String[] args) {

Spider.create(new GithubRepoPageProcessor())

//從"https://github.com/code4craft"開始抓

.addUrl("https://github.com/code4craft")

//開啟5個線程抓取

.thread(5)

//啟動爬蟲

.run();

}

}

3.1.1 爬蟲的配置

第一部分關(guān)于爬蟲的配置,包括編碼、抓取間隔、超時時間、重試次數(shù)等,也包括一些模擬的參數(shù),例如User Agent、cookie,以及代理的設(shè)置,我們會在第5章-“爬蟲的配置”里進(jìn)行介紹。在這里我們先簡單設(shè)置一下:重試次數(shù)為3次,抓取間隔為一秒。

3.1.2 頁面元素的抽取

第二部分是爬蟲的核心部分:對于下載到的Html頁面,你如何從中抽取到你想要的信息?WebMagic里主要使用了三種抽取技術(shù):XPath、正則表達(dá)式和CSS選擇器。

XPath本來是用于XML中獲取元素的一種查詢語言,但是用于Html也是比較方便的。例如:

page.getHtml().xpath("//h1[@class='entry-title public']/strong/a/text()")

這段代碼使用了XPath,它的意思是“查找所有class屬性為'entry-title public'的h1元素,并找到他的strong子節(jié)點的a子節(jié)點,并提取a節(jié)點的文本信息”。

對應(yīng)的Html是這樣子的:

CSS選擇器是于XPath類似的語言。如果大家做過前端開發(fā),肯定知道$('h1.entry-title')這種寫法的含義。客觀的說,它比XPath寫起來要簡單一些,但是如果寫復(fù)雜一點的抽取規(guī)則,就相對要麻煩一點。

正則表達(dá)式則是一種通用的文本抽取語言。

page.addTargetRequests(page.getHtml().links().regex("(https://github\\.com/\\w+/\\w+)").all());

XPath、CSS選擇器和正則表達(dá)式的具體用法我會在第4章“抽取工具詳解”中講到。

3.1.3 鏈接的發(fā)現(xiàn)

3.2 保存結(jié)果

4. 抽取工具詳解

4.1 XPath

4.2 CSS選擇器

4.3 正則表達(dá)式

4.4 JsonPath

5. 配置爬蟲

5.1 抓取頻率

5.2 編碼

5.3 代理

5.4 設(shè)置cookie/UA等http頭信息

5.5 重試機制

5.6 多線程

6. 爬蟲的啟動和終止

6.1 啟動爬蟲

6.2 終止爬蟲

6.3 設(shè)置執(zhí)行時間

6.4 定期抓取

7. 抽取結(jié)果的處理

7.1 輸出到控制臺

7.2 保存到文件

7.3 JSON格式輸出

7.4 自定義持久化方式(mysql/mongodb…)

8. 管理URL

8.1 手動添加URL

8.2 在URL中保存信息

8.3 幾種URL管理方式

8.4 自己管理爬蟲的URL

9. 實例

9.1 基本的列表+詳情頁的抓取

9.2 抓取動態(tài)頁面

9.3 分頁抓取

9.4 定期抓取

總結(jié)

以上是生活随笔為你收集整理的mysql git 获取 稳定版本 源码_webmagic新版文档(更新中)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。