データをAPI経由でサーブする


当社のプロジェクトでは、ウェブサイト(Thehackernews . com)を介してすべてのカテゴリからのすべての最新の記事を取得するためにPythonのリクエストHTMLライブラリを使用してscrapeを使用します.プロジェクトは、単にすべての記事のタイトルとリンクをターミナルに印刷するだけでした.
このプロジェクトでは、PythonのFastAPIフレームワークを使用して、スクライブされたデータをAPIで提供します.我々はまた、データを提供し、スクレーピングを活性化する簡単にスクレーピングが行われる方法にいくつかの調整を行います.
それで、我々のシステムにTHN_scraperプロジェクトをクローニングすることから始めましょう.git clone https://github.com/VishnuDileesh/THN_scraperフォルダーに移動した後、仮想環境を作成してパッケージをインストールします.python3 -m venv envsource env/bin/activate環境を活性化した後、必要なパッケージを我々の要件からインストールしましょう.txtpip3 install -r requirements.txtでは、次のコマンドを端末に呼び出してプロジェクトを実行しましょう.python3 main.py
プロジェクトの実行では、上記の出力をターミナルで取得します.今、それは我々がすべてのベースプロジェクトを設定すると良いことを意味します.それではAPIを通してデータを提供することを始めましょう.
メインの名前を変更することから始めます.スクレーパへのPYファイル.パイ
名前を変更すると、我々はスクレーパーにいくつかの微調整を行う必要があります.Pyファイル
def scrapeData():

    datas = []

    for category in categories:

        category = CategoryScrape(f'{baseURL}{category}', category)

        category.scrapeArticle()


def getScrapedData():

    return datas
ここでは、scrapeループをSCRACEDATAという関数に入れて、APIエンドポイントから関数を呼び出すことができます.また、GetSettedDataという別の関数を作成して、APIエンドポイントのスクレーディングデータを受け取ります.
今、私たちの仕事はすべてスクレーパーで行われます.Pyファイル.メインという新しいファイルを作成して進みましょう.Py、すべてのAPIコードを格納します.
プロジェクトにFastAPIとUvicornをインストールすることを忘れないでください.pip3 install fastapi uvicorn今、すべてがインストールされているとき、我々の要件を更新しましょう.新しくインストールされたパッケージを反映するtxtファイルpip3 freeze > requirements.txt
from fastapi import FastAPI, BackgroundTasks
from scraper import scrapeData, getScrapedData

app = FastAPI()


@app.get("/")
async def index():
    """ index route """

    return {
        "get-data": "visit /get-data to get scraped data",
        "scrape-data": "visit /scrape-data to activate scraping"
    }
我々のメインで.Py、我々のインストールFastAPIフレームワークからfastapiとbackgroundtaskをインポートすることから始めます.それから、スクラップから関数ScrapeDataとGetScrapedDataをインポートする必要があります.Pyファイル.
次に、import fastmap ()を初期化することでアプリケーションオブジェクトを作成します.最初のルートを作成することによって、非常に単純なJSONレスポンスを返すことになります.
@app.get("/get-data")
async def get_data():
    """ Get all scraped data as in json by visiting /get-data """
    return getScrapedData()


@app.get("/scrape-data")
async def scrape_data(background_tasks: BackgroundTasks):
    """ On doing a get request to '/scrape-data' you Activates scraping """

    background_tasks.add_task(scrapeData)

    return {"Status": "Activated Scraping"}
GETデータルートでは、スクレーパーからインポートされたGetScrapedData関数を呼び出します.Pyファイル.ルートは、我々がウェブサイト(TheHackerNews . com)からこすったすべてのデータを返すでしょう
スクラップのデータルートでは、我々はスクラップから輸入スクラップデータ機能を渡します.Py backgroundCountタスクに.戻り値を返すと、スクリプトを実行し、最新のハッキングニュース記事を取得するために、すべての掻爬の魔法を行います.
今、我々はAPIをWebサーバー上で提供する準備ができている.UvicornをWebサーバーとして使用します.runという新しいファイルを作りましょう.webサーバの設定があります.

import uvicorn

if __name__ == "__main__":

    uvicorn.run("main:app",
                host='0.0.0.0',
                port=8000,
                reload=False,
                debug=False,
                workers=25)
ここで我々の実行.Pyファイルは、我々のインストールユニコーンをインポートしています.次に、ファイルを初期化し、uvicorn関数を呼び出します.実行すると、我々は我々のアプリケーション(我々はmain . pyファイルで初期化)を通過しているし、また、我々はホストとポートを指定しているのuvicornを提供しています.そして、それらは開発設定として、ReloadとDebugをfalseに設定します.ワーカーパラメータを使用すると、サーバーの動作するサーバーの数を設定できます.
だから、それはプロジェクトに必要なコードです.コマンドを実行してプロジェクトを実行しますpython3 run.py
プロジェクトGithubレポへのリンク

ヴィシュヌーディシュ / シュンレークラーンAPI


ウェブサイト(Thehackernews . com)からすべてのカテゴリーで最新の記事をこすって、リストするウェブAPI


ハッピーコーディング、キープコーディング