All Projects → webmiddle → Webmiddle

webmiddle / Webmiddle

Licence: mit
Node.js framework for modular web scraping and data extraction

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Webmiddle

Ignition Go
Bootstrap4 /Codeigniter 3 Modular (HMVC) App Building Framework - to build enterprise class web applications... Versions: CodeIgniter 3.1.9 AdminLTE 3.4 Bootstrap 4.5.0
Stars: ✭ 166 (+1176.92%)
Mutual labels:  framework, modular
Php Curl Class
PHP Curl Class makes it easy to send HTTP requests and integrate with web APIs
Stars: ✭ 2,903 (+22230.77%)
Mutual labels:  web-scraping, framework
Oxide
Old repository for the Oxide mod. See individual repositories for updates
Stars: ✭ 173 (+1230.77%)
Mutual labels:  framework, modular
Tinypart
TinyPart is an iOS modularization framework implemented by Ojective-C. It also supports URL-routing and inter-module communication. TinyPart是一个由Objective-C编写的面向协议的iOS模块化框架,同时它还支持URL路由和模块间通信机制。
Stars: ✭ 120 (+823.08%)
Mutual labels:  framework, modular
Tentcss
🌿 A CSS survival kit. Includes only the essentials to make camp.
Stars: ✭ 400 (+2976.92%)
Mutual labels:  framework, modular
Http
An opinionated framework for scalable web 🌎
Stars: ✭ 136 (+946.15%)
Mutual labels:  framework, modular
Grab
Web Scraping Framework
Stars: ✭ 2,147 (+16415.38%)
Mutual labels:  web-scraping, framework
Modularjs
△ Dead simple modular JavaScript framework for ES modules.
Stars: ✭ 52 (+300%)
Mutual labels:  framework, modular
Plato
❤️ a Boilerplate for [mobile] SPAs use vue, vuex, vue-router
Stars: ✭ 283 (+2076.92%)
Mutual labels:  framework, modular
Liblava
🌋 A modern and easy-to-use library for the Vulkan API
Stars: ✭ 275 (+2015.38%)
Mutual labels:  framework, modular
Reactinterface
This is the repository for my course, Building a Web Interface with React.js on LinkedIn Learning and Lynda.com.
Stars: ✭ 113 (+769.23%)
Mutual labels:  framework, jsx
Nerv
A blazing fast React alternative, compatible with IE8 and React 16.
Stars: ✭ 5,409 (+41507.69%)
Mutual labels:  framework, jsx
Skeleton
A ready-to-use CodeIgniter skeleton with tons of new features and a whole new concept of hooks (actions and filters) as well as a ready-to-use and application-free themes and plugins system. Facebook Page: http://bit.ly/2oHzpxC | Facebook Group: http://bit.ly/2o3KOrA. Help me carry on making more free stuff → http://bit.ly/2ppNujE ←
Stars: ✭ 74 (+469.23%)
Mutual labels:  framework, modular
Mag.js
MagJS - Modular Application Glue
Stars: ✭ 157 (+1107.69%)
Mutual labels:  framework, modular
Komada
Komada: Croatian for `pieces`, is a modular bot system including reloading modules and easy to use custom commands.
Stars: ✭ 67 (+415.38%)
Mutual labels:  framework, modular
Crank
Write JSX-driven components with functions, promises and generators.
Stars: ✭ 2,487 (+19030.77%)
Mutual labels:  framework, jsx
Sihl
A modular functional web framework
Stars: ✭ 267 (+1953.85%)
Mutual labels:  framework, modular
Gf
GoFrame is a modular, powerful, high-performance and enterprise-class application development framework of Golang.
Stars: ✭ 6,501 (+49907.69%)
Mutual labels:  framework, modular
Whs.js
🚀 🌪 Super-fast 3D framework for Web Applications 🥇 & Games 🎮. Based on Three.js
Stars: ✭ 5,685 (+43630.77%)
Mutual labels:  framework, modular
Picotcp
PicoTCP is a free TCP/IP stack implementation
Stars: ✭ 838 (+6346.15%)
Mutual labels:  modular

Build Status Coverage Status

webmiddle

Node.js framework for modular web scraping and data extraction

The building block of any webmiddle application is the JSX component.
Each component executes one task or controls the execution of other tasks by composing other components.

const FetchPageLinks({ url, query, name }) = () =>
  <Pipe>
    <HttpRequest contentType="text/html" url={url} />

    {rawHtml =>
      <HtmlToJson name={name} from={rawHtml} content={
        {
          anchors: $$.within("a", $$.pipe(
            $$.filter(el => el.text().toUpperCase().indexOf(query.toUpperCase()) !== -1),
            $$.map({
              url: $$.attr("href"),
              text: $$.getFirst()
            })
          ))
        }
      }/>
    }
  </Pipe>

The framework provides a set of core components for the most common operations, but there is no difference between a core component and a component that you may want to develop yourself.

Webmiddle applications can be quickly turned into REST APIs, allowing remote access via HTTP or WebSocket. Use webmiddle-devtools for running and debugging your components and test them remotely.

Links

Features

Built-in features provided by the core components:

Core packages

Name Description
webmiddle npm version
webmiddle-manager-cookie npm version
webmiddle-component-pipe npm version
webmiddle-component-parallel npm version
webmiddle-component-resume npm version
webmiddle-component-http-request npm version
webmiddle-component-browser npm version
webmiddle-component-cheerio-to-json npm version
webmiddle-component-jsonselect-to-json npm version
webmiddle-server npm version
webmiddle-client npm version

Open source ecosystem

Create your own components and publish them to npm!

One of the main philosophies of the framework is reuse, by creating an ecosystem where components can be published as separate npm modules to be usable in other projects.

NOTE: If you think that a component / feature is so common and general that it should be in the core, open an issue or just do a pull request!

Contributing

This is a monorepo, i.e. all the core components and the main webmiddle package are all in this single repository.

It uses Yarn and Lerna for managing the monorepo, as you might have guessed from the lerna.json file.

Start by installing the root dependencies with:

yarn

Then install all the packages dependencies and link the packages together by running:

yarn run lerna bootstrap

Build all the packages by running:

yarn run build

To run the tests for all the packages at once and get coverage info, execute:

yarn run test

NOTE: make sure to build before running the tests.

NOTE: If you are on Windows, you might need to run the install and bootstrap commands as administrator.

Each package uses the same build / test system.

Once you are inside a package folder, you can build it by running yarn run build or yarn run build:watch (for rebuilding on every change).

Tests use AVA, thus they can be written in modern JavaScript, moreover they will also run concurrently. You can run the tests with yarn run test. To run the tests on every change you can use yarn run test:watch. The latter option is highly recommended while developing, as it also produces a much more detailed output.

For running the same npm command in all the packages, use lerna run, example:

yarn run lerna run build

For running arbitrary commands, use lerna exec, example:

yarn run lerna -- exec -- rm -rf ./node_modules

See Lerna commands for more info.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].