自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

21個(gè)優(yōu)秀開源網(wǎng)絡(luò)爬蟲庫,適合Python、Java、Go、JavaScript開發(fā)語言

開發(fā)
在各種網(wǎng)絡(luò)爬蟲工具中,開源網(wǎng)絡(luò)爬蟲具備高靈活性、可擴(kuò)展性,也更受技術(shù)人員的青睞。以下分別是在Python、Java、Go、JavaScript等開發(fā)語言領(lǐng)域比較優(yōu)秀的開源網(wǎng)絡(luò)爬蟲庫。

網(wǎng)絡(luò)爬蟲是一種用于從互聯(lián)網(wǎng)上的網(wǎng)頁中提取數(shù)據(jù)的工具或代碼?;ヂ?lián)網(wǎng)數(shù)據(jù)價(jià)值不可估量,應(yīng)用場景十分廣泛,網(wǎng)絡(luò)爬蟲對于互聯(lián)網(wǎng)數(shù)據(jù)的抓取發(fā)揮著重要作用。因此,從技術(shù)角度看,爬蟲推動(dòng)了大數(shù)據(jù)的發(fā)展。

爬蟲的工作流程非常簡單,無非就是三個(gè)步驟:

  • 模擬人類瀏覽網(wǎng)站的行為。輸入目標(biāo)URL后,它向服務(wù)器發(fā)送一個(gè)請求,并在HTML文件中獲取信息。
  • 有了HTML源代碼,機(jī)器人就能夠到達(dá)目標(biāo)數(shù)據(jù)所在的節(jié)點(diǎn),并按照抓取代碼中的命令解析數(shù)據(jù)。
  • 清洗抓取的數(shù)據(jù),轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu),并保存到數(shù)據(jù)庫。

但在實(shí)際互聯(lián)網(wǎng)環(huán)境下,無處不存在著道高一尺魔高一丈的博弈。因此并沒有完美的爬蟲工具,只能說盡量選擇比較靈活、易于擴(kuò)展的庫,根據(jù)實(shí)際需要進(jìn)行配置或開發(fā)。

在各種網(wǎng)絡(luò)爬蟲工具中,開源網(wǎng)絡(luò)爬蟲具備高靈活性、可擴(kuò)展性,也更受技術(shù)人員的青睞。甚至有些爬蟲項(xiàng)目能夠?qū)崿F(xiàn)無代碼或低代碼。

以下分別是在Python、Java、Go、JavaScript等開發(fā)語言領(lǐng)域比較優(yōu)秀的開源網(wǎng)絡(luò)爬蟲庫。

  • Python:Scrapy、PySpider、Mechanical Soup、AutoCrawler
  • java:WebMagic、Crawler4j、WebCollector、Nutch、Heritrix、Web_harvest、StormCrawler
  • Golang:Crawlab、ferret、Hakrawler、Crawlergo、Geziyor、Gospider、Gocrawl、fetchbot
  • JavaScript:Node-crawler、EasySpider

1.Scrapy

開發(fā)語言: Python

GitHub(49.3K):https://github.com/scrapy/scrapy

Scrapy是Python中最受歡迎的開源Web爬蟲和協(xié)作Web抓取工具。有助于從網(wǎng)站中有效地提取數(shù)據(jù),根據(jù)需要處理數(shù)據(jù),并以一定數(shù)據(jù)格式(JSON,XML和CSV)保存。

優(yōu)點(diǎn):

  • 快速且強(qiáng)大
  • 易于使用,有詳細(xì)的文檔
  • 無需修改內(nèi)核即可增加新功能
  • 健康的社區(qū)和豐富的資源
  • 支持在云環(huán)境中運(yùn)行

2.PySpider

開發(fā)語言: Python

GitHub(16.1K):https://github.com/binux/pyspider

PySpider是一個(gè)強(qiáng)大的Python網(wǎng)絡(luò)爬蟲系統(tǒng)。采用分布式系統(tǒng)架構(gòu),提供易于使用的Web UI,提供了調(diào)度器、提取器和處理器等諸多組件。它支持MongoDB、MySQL等數(shù)據(jù)庫。

優(yōu)點(diǎn):

  • 強(qiáng)大的WebUI,包含腳本編輯器、任務(wù)監(jiān)視器、項(xiàng)目管理器和結(jié)果查看器
  • 支持使用RabbitMQ、Beanstalk、Redis和Kombu作為消息隊(duì)列
  • 分布式架構(gòu)

3.Mechanical Soup

開發(fā)語言:Python

GitHub(4.5K):https://github.com/MechanicalSoup/MechanicalSoup

Mechanical Soup是一個(gè)Python庫,旨在模擬人類在使用瀏覽器時(shí)與網(wǎng)站的交互。它基于Python的Requests(用于HTTP會(huì)話)和BeautifulSoup(用于文檔導(dǎo)航)構(gòu)建??勺詣?dòng)存儲(chǔ)和發(fā)送cookie,遵循重定向,遵循鏈接,并提交表單。

優(yōu)點(diǎn):

  • 模擬人類行為的能力
  • 快速抓取相當(dāng)簡單的網(wǎng)站
  • 支持CSS和XPath選擇器

4.AutoCrawler

開發(fā)語言:Python

GitHub(19.1K):https://github.com/YoongiKim/AutoCrawler

這是個(gè)可控制Naver多進(jìn)程圖像爬蟲(高品質(zhì)速度可定制)。

5.WebMagic

開發(fā)語言:Java

GitHub(11K):https://github.com/code4craft/webmagic

webmagic是一個(gè)開源的Java爬蟲框架,目標(biāo)是簡化爬蟲的開發(fā)流程,讓開發(fā)者專注于邏輯功能的開發(fā)。下圖是WebMagic的工作流程圖。

優(yōu)勢:

  • 完全模塊化的設(shè)計(jì),強(qiáng)大的可擴(kuò)展性。
  • 核心簡單但是涵蓋爬蟲的全部流程,靈活而強(qiáng)大,也是學(xué)習(xí)爬蟲入門的好材料。
  • 提供豐富的抽取頁面API。
  • 無配置,但是可通過POJO+注解形式實(shí)現(xiàn)一個(gè)爬蟲。
  • 支持多線程。
  • 支持分布式。
  • 支持爬取js動(dòng)態(tài)渲染的頁面。
  • 無框架依賴,可以靈活地嵌入到項(xiàng)目中去。

Maven:

<dependency>
    <groupId>us.codecraft</groupId>
    <artifactId>webmagic-core</artifactId>
    <version>${webmagic.version}</version>
</dependency>
<dependency>
    <groupId>us.codecraft</groupId>
    <artifactId>webmagic-extension</artifactId>
    <version>${webmagic.version}</version>
</dependency>

6.crawler4j

開發(fā)語言:Java

GitHub(4.5K):https://github.com/yasserg/crawler4j

crawler4j是一個(gè)開源的Java網(wǎng)絡(luò)爬蟲,它提供了一個(gè)簡單的接口, 抓取網(wǎng)頁使用它,可以在幾分鐘內(nèi)設(shè)置一個(gè)多線程的網(wǎng)絡(luò)爬蟲。

Maven:

   <dependency>
        <groupId>edu.uci.ics</groupId>
        <artifactId>crawler4j</artifactId>
        <version>4.4.0</version>
    </dependency>

7.WebCollector

開發(fā)語言:Java

GitHub(3K):https://github.com/CrawlScript/WebCollector

WebCollector是一個(gè)基于Java的開源網(wǎng)絡(luò)爬蟲框架。它提供了一些簡單的界面,可以在5分鐘內(nèi)設(shè)置一個(gè)多線程網(wǎng)絡(luò)爬蟲。它除了是一個(gè)通用的爬蟲框架之外,WebCollector還集成了CEPF(Web內(nèi)容提取算法)。Maven:

<dependency>
    <groupId>cn.edu.hfut.dmic.webcollector</groupId>
    <artifactId>WebCollector</artifactId>
    <version>2.73-alpha</version>
</dependency>

8.Apache Nutch

開發(fā)語言:Java

GitHub(2.7K):https://github.com/apache/nutch

Apache Nutch是一個(gè)完全用Java編寫的開源scraper,具有高度模塊化的架構(gòu),提供了解析媒體類型、數(shù)據(jù)檢索、查詢和集群等插件。作為可插拔和模塊化的,Nutch還提供了可擴(kuò)展接口。

優(yōu)點(diǎn):

  • 高度可擴(kuò)展和可伸縮
  • 遵守txt規(guī)則
  • 充滿活力的社區(qū)和積極發(fā)展
  • 可插拔的解析、協(xié)議、存儲(chǔ)和索引

9.Heritrix

開發(fā)語言:Java

GitHub(2.6K):https://github.com/internetarchive/heritrix3

Heritrix是一個(gè)基于JAVA的開源爬蟲工具,具有高度的可擴(kuò)展性,并高度尊重robot.txt排除指令和Meta機(jī)器人標(biāo)簽,并以自適應(yīng)速度收集數(shù)據(jù),執(zhí)行穩(wěn)定性好。它提供了一個(gè)基于Web的用戶界面,可通過Web瀏覽器訪問,以供操作員控制、監(jiān)控。

優(yōu)點(diǎn):

  • 可更換的可插拔模塊
  • 基于web的界面
  • 尊重robot.txt和Meta robot標(biāo)記
  • 延展性良好

10.Web-Harvest

開發(fā)語言:Java

下載地址:https://sourceforge.net/projects/web-harvest/

Web-Harvest是一個(gè)用Java編寫的開源爬蟲工具。它可以從指定的頁面收集有用的數(shù)據(jù)。它利用XML、XQuery和正則表達(dá)式等技術(shù)來操作或過濾基于HTML/XML的網(wǎng)站的內(nèi)容,可以很容易地?cái)U(kuò)展,以增強(qiáng)其提取能力。

優(yōu)點(diǎn):

  • 可用于數(shù)據(jù)處理的強(qiáng)大文本和XML操作處理器
  • 用于存儲(chǔ)和使用的上下文變量
  • 支持真實(shí)的腳本語言,可輕松集成到項(xiàng)目中

11.StormCrawler

開發(fā)語言: Java

GitHub(825):https://github.com/DigitalPebble/storm-crawler

StormCrawler是一個(gè)成熟的開源Java網(wǎng)絡(luò)爬蟲。它由一系列可重用的資源和組件組成。可用于在Java中構(gòu)建低延遲、可擴(kuò)展、易優(yōu)化的Web爬蟲。

優(yōu)點(diǎn):

  • 高度可擴(kuò)展,可用于大規(guī)模遞歸爬網(wǎng)
  • 易于使用其他Java庫進(jìn)行擴(kuò)展
  • 出色的線程管理,減少了抓取的延遲

12.crawlab

開發(fā)語言:Go

GitHub(10.4K):https://github.com/crawlab-team/crawlab

基于Golang的分布式網(wǎng)絡(luò)爬蟲管理平臺(tái),支持Python、NodeJS、Go、Java、PHP等多種語言,支持Scrapy、Puppeteer、Selenium等多種網(wǎng)絡(luò)爬蟲框架。

簡單說:它是管理爬蟲的管理工具。

13.ferret

開發(fā)語言:Go

GitHub(5.5K):https://github.com/MontFerret/ferret

ferret是一個(gè)網(wǎng)頁爬蟲系統(tǒng)。旨在簡化從Web中提取的數(shù)據(jù),用于UI測試、機(jī)器學(xué)習(xí)、分析等。

ferret允許用戶專注于數(shù)據(jù)。它使用自己的描述性語言抽象出底層技術(shù)的技術(shù)細(xì)節(jié)和復(fù)雜性。它非常便攜、可擴(kuò)展和快速。

優(yōu)勢:

  • 支持描述性語言
  • 支持靜態(tài)和動(dòng)態(tài)網(wǎng)頁
  • 可嵌入
  • 可擴(kuò)展

下面是ferret的架構(gòu)圖:

14.hakrawler

開發(fā)語言:Go

GitHub(4K):https://github.com/hakluke/hakrawler

這是一個(gè)簡單、快速的Web爬蟲,旨在輕松、快速地發(fā)現(xiàn)Web應(yīng)用程序中的端點(diǎn)和資產(chǎn)。用于收集URL和JavaScript文件位置的快速golang爬蟲。是一個(gè)很棒的Gocolly庫的簡單實(shí)現(xiàn)。

15.crawlergo

開發(fā)語言:Go

GitHub(2.6K):https://github.com/Qianlitp/crawlergo

crawlergo是一個(gè)使用chrome headless模式進(jìn)行URL收集的網(wǎng)頁爬蟲。它對整個(gè)網(wǎng)頁的關(guān)鍵位置與DOM渲染階段進(jìn)行HOOK,盡可能收集網(wǎng)站暴露的入口,自動(dòng)進(jìn)行表單填充并提交,配合智能的JS觸發(fā)事件。內(nèi)置URL去重模塊,過濾掉了大量偽靜態(tài)URL,對于大型網(wǎng)站仍保持較快的解析與抓取速度,最后得到高質(zhì)量的請求結(jié)果集合。

優(yōu)勢:

  • 原生瀏覽器環(huán)境,線程池調(diào)度任務(wù)
  • 表單智能填充、自動(dòng)化提交
  • 完整DOM事件收集,自動(dòng)化觸發(fā)
  • 智能URL去重,去掉大部分的重復(fù)請求
  • 全面分析收集,包括javascript文件內(nèi)容、頁面注釋、robots.txt文件和常見路徑Fuzz
  • 支持Host綁定,自動(dòng)添加Referer
  • 支持請求代理,支持爬蟲結(jié)果主動(dòng)推送

16.geziyor

開發(fā)語言:Go

GitHub(2.3K):https://github.com/geziyor/geziyor

Geziyor是一個(gè)非常快速的網(wǎng)頁抓取和網(wǎng)頁抓取框架。它可以用來抓取網(wǎng)站并從中提取結(jié)構(gòu)化數(shù)據(jù)。Geziyor可用于廣泛的目的,如數(shù)據(jù)挖掘,監(jiān)控和自動(dòng)化測試。

17.Gospider

開發(fā)語言:Go

GitHub(2.2K):https://github.com/jaeles-project/gospider

Gospider是一個(gè)用Go語言編寫的快速網(wǎng)絡(luò)爬蟲。

可在Docker運(yùn)行:

# Clone the repo
git clone https://github.com/jaeles-project/gospider.git
# Build the contianer
docker build -t gospider:latest gospider
# Run the container
docker run -t gospider -h

18.Gocrawl

開發(fā)語言:Go

GitHub(2K):https://github.com/PuerkitoBio/gocrawl

一個(gè)輕量級(jí),高并發(fā)網(wǎng)絡(luò)爬蟲。

19.fetchbot

開發(fā)語言:Go

GitHub(777+):https://github.com/PuerkitoBio/fetchbot

這是一個(gè)Go包,提供了一個(gè)簡單而靈活的網(wǎng)絡(luò)爬蟲功能,遵循robots.txt 策略,支持延遲機(jī)制。

這是一個(gè)基于gocrawl重新改造的爬蟲,具備更簡單的API,更少的內(nèi)置功能,但更靈活。

20.Node-crawler

開發(fā)語言: JavaScript

GitHub(6.5K):https://github.com/bda-research/node-crawler

Node-crawler是一個(gè)強(qiáng)大的、流行的、基于Node.js的網(wǎng)絡(luò)爬蟲。完全用Node.js編寫,支持非阻塞異步I/O,實(shí)現(xiàn)爬蟲的流水線運(yùn)行機(jī)制。同時(shí)支持DOM的快速選?。o需編寫正則表達(dá)式)。

優(yōu)點(diǎn):

  • 支持速率控制
  • 支持不同優(yōu)先級(jí)的requestsURL請求
  • 可配置的池大小和重試次數(shù)
  • 服務(wù)器端使用Cheerio(默認(rèn))或JSDOM實(shí)現(xiàn)jQuery自動(dòng)插入DOM

21.EasySpider

開發(fā)語言:JavaScript

GitHub(17.5K):

https://github.com/NaiboWang/EasySpider

這是一個(gè)可視化瀏覽器自動(dòng)化測試/數(shù)據(jù)采集/爬蟲軟件,可以使用圖形化界面,無代碼可視化的設(shè)計(jì)和執(zhí)行任務(wù)。只需要在網(wǎng)頁上選擇自己想要操作的內(nèi)容并根據(jù)提示框操作即可完成任務(wù)的設(shè)計(jì)和執(zhí)行。同時(shí)軟件還可以單獨(dú)以命令行的方式進(jìn)行執(zhí)行,從而可以很方便地嵌入到其他系統(tǒng)中。

責(zé)任編輯:趙寧寧 來源: andflow
相關(guān)推薦

2019-11-13 09:01:48

開源JavaScript模板引擎

2024-11-27 06:31:02

2023-06-21 08:05:39

開源UI庫互聯(lián)網(wǎng)

2022-10-30 23:13:30

contextGo語言

2022-07-03 17:10:15

JavaScript編程語言開發(fā)

2020-08-31 08:04:00

Python編程開源庫

2024-03-12 00:10:00

PythonIDE開發(fā)

2019-11-18 08:41:09

JavaScript編程語言瀏覽器

2019-11-26 09:11:50

數(shù)據(jù)庫JavaHadoop

2020-05-26 08:38:57

JavaScript語言

2020-08-11 08:11:40

JavaScript開發(fā)技術(shù)

2011-10-31 15:20:10

JavaScript

2020-04-14 09:19:31

前端開發(fā)UI設(shè)計(jì)ICON

2022-08-08 06:43:37

網(wǎng)絡(luò)安全網(wǎng)絡(luò)攻擊

2014-04-24 10:48:27

Go語言基礎(chǔ)實(shí)現(xiàn)

2021-10-18 06:54:47

Go開源庫業(yè)務(wù)

2024-02-26 19:38:20

GitHubGo庫Golang

2009-12-28 09:09:34

Google開源項(xiàng)目

2018-09-25 11:19:05

開源JavaScript圖表庫

2023-11-30 15:30:19

Python編程語言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)