UNPKG

bdo-scraper

Version:

A scraper for BDOCodex.com and BDDatabase.net.

120 lines (98 loc) 3.48 kB
# BDO Scraper BDOScraper is a web scraper developed for [BDDatabase](https://bddatabase.net/). It used to support [BDOCodex](http://bdocodex.com/) previously. Currently supports the english language, and portuguese partially. - [BDO Scraper](#bdo-scraper) - [What changed from v1 to v2](#what-changed-from-v1-to-v2) - [Bug Report](#bug-report) - [Installation](#installation) - [Usage](#usage) - [Scraping Pages](#scraping-pages) - [Searches](#searches) ## What changed from v1 to v2 - **v2 is not compatible with v1** - Dropped support for BDOCodex - Simplified API - Added support for querying recipes - Searches are now supported ## Bug Report If you find a bug, such as an item with incorrect data (different from what the web page shows), please open an issue. ## Installation ```bash npm install bdo-scraper ``` ## Usage **You can read more about the project by reading the [Docs](https://github.com/marceloclp/bdo-scraper/wiki).** ### Scraping Pages Scraping a page is as simple as importing the correct entity scraper and calling the function. ```javascript const { Item, Recipe, MaterialGroup, Enums } = require('bdo-scraper') // Using ES7 async/await syntax. async () => { // Returns the data for the item with id 9233. const itemData = await Item(9213) // Or, if you need it in another language, pass a different flag. const itemDataInPortuguese = await Item(9213, Enums.LANGS.pt) // You can get different types of entities by using a different Scraper. const recipeData = await Recipe(122) console.log(itemData) // Output below } ``` This would return an object like: ```json { "id": 9213, "name": "Beer", "grade": 1, "icon": "/items/new_icon/03_etc/07_productmaterial/00009213.png", "type": "Special Items", "weight": "0.10 LT", "description": "A mild alcoholic drink brewed from cereal grains", "p_transaction": true, "prices": { "buy": "2,150", "sell": "86", "repair": null }, "effects": [ "Worker Stamina Recovery +2", "(Use through the Worker Menu on the World Map)." ], "lifespan": null, "duration": null, "cooldown": null, ... } ``` ### Searches BDOScraper also supports searches now. ```javascript const { Search, Enums } = require('bdo-scraper') async () => { // Returns at most 10 of the most popular results that match the search term. const dataPopular = await Search('beer') // When passing `false` to the third parameter, all results that match the search term will be returned. const dataAll = await Search('beer', Enums.LANGS.en, false) // You can scrape the item directly from the results. const itemData = await dataAll[0].scrape() console.log(dataAll) // Output below } ``` This would return an object like: ```json [ { "name": "Beer", "id": 9213, "grade": 1, "type": "Item", "link": "/us/item/9213/", "icon": "/items/new_icon/03_etc/07_productmaterial/00009213.png", "scrape": "__function__" }, { "name": "Cold Draft Beer", "id": 9283, "grade": 2, "type": "Item", "link": "/us/item/9283/", "icon": "/items/new_icon/03_etc/07_productmaterial/00009283.png", "scrape": "__function__" }, ... ] ```