DEV Community

Cover image for My First Repo: Scraping API + Node.js SDK with Captcha Bypass
Decentraliseur
Decentraliseur

Posted on Edited on

My First Repo: Scraping API + Node.js SDK with Captcha Bypass

Hi devs,

I've just created my absolutely first Github repo, and I wanted to get your opinion on it.

The concerned project is a Nodejs SDK for web scraping that, connected to an API I maintain, aims to be ultra easy to use. (I've planned to adapt this SDK to Python in the future)

The easy-to-use aspect is really one of the key points of the project, with the pricing.

I've used many web scraping apis in the past, and I found them costly and the dev experience was terrible.

ScrapingAPI is supposed to simplify the whole process of extracting data from the web: captcha bypass, requests and clean data extraction.

The API isn't live for now, but I could be glad if you could give me some feedback about what could be added, improved or removed from the readme.

Here is the github: https://github.com/scrapingapi/scraper

Many thanks in advance

Top comments (1)

Collapse
 
gaetanlegac profile image
Decentraliseur •

I've just updated it with simple examples on scraping Google search results and Amazon product info.

Google search for bitcoin: get current price and results

import Scraper, { $ } from 'scrapingapi';
const page = new Scraper('API_KEY');

// Scrape Google search results for "bitcoin"
page.get("https://www.google.com/search?q=bitcoin", { device: "desktop" }, {
    // Extract the current bitcoin price                  
    price: $("#search .obcontainer .card-section > div:eq(1)").filter("price"),
    // For each Google search result
    results: $("h2:contains('Web results') + div").each({
        // We retrieve the URL
        url: $("a[href]").attr("href").filter("url"),
        // ... And the title text
        title: $("h3")
    })
}).then( data => {

    console.log("Here are the results:", data);

});
Enter fullscreen mode Exit fullscreen mode

You get this response:

{
    "url": "https://www.google.com/search?q=bitcoin",
    "status": 200,
    "time": 2.930,
    "data": {
        "price": {
            "amount": 49805.02,
            "currency": "EUR"
        },
        "results": [{
            "url": "https://bitcoin.org/",
            "title": "Bitcoin - Open source P2P money"
        }, {
            "url": "https://coinmarketcap.com/currencies/bitcoin/",
            "title": "Bitcoin price today, BTC to USD live, marketcap and chart"
        }, {
            "url": "https://www.bitcoin.com/",
            "title": "Bitcoin.com | Buy BTC, ETH & BCH | Wallet, news, markets ..."
        }, {
            "url": "https://en.wikipedia.org/wiki/Bitcoin",
            "title": "Bitcoin - Wikipedia"
        }]
    }
}
Enter fullscreen mode Exit fullscreen mode

Amazon product page

(I didn't know what product to pick, so I took a random but cool tshirt)

page.get("https://www.amazon.com/dp/B08L76BSZ5", { device: 'mobile', withHeaders: true }, {

    title: $("#title"),
    price: $("#corePrice_feature_div .a-offscreen:first"),
    image: $("#main-image").attr("src"),
    reviews: {
        rating: $(".cr-widget-Acr [data-hook='average-stars-rating-text']")
    }

});
Enter fullscreen mode Exit fullscreen mode

Response:

{
    "url": 'https://www.amazon.com/dp/B08L76BSZ5',
    "status": 200,
    "time": 5.329,
    "data": {
      "title": "sportbull Unisex 3D Printed Graphics Novelty Casual Short Sleeve T-Shirts Tees",
      "price": "$9.99",
      "image": "https://m.media-amazon.com/images/I/71c3pFtZywL._AC_AC_SY350_QL65_.jpg",
      "reviews": {
          "rating": "4.4 out of 5"
      }
}
Enter fullscreen mode Exit fullscreen mode

Next steps

I'm currently writing a price comparison api, so I (and you soon) can test the scraping api in a real world usage.
I hope the test version will be live this weekend. Totally free of course, I don't want to charge for an unstable service

Peace