このガイドでは、LlamaIndexのBright Dataツールを使ってデータを抽出します。このチュートリアルを終えると、以下のことができるようになります。
- ウェブサイトのデータをマークダウンとして抽出
- ウェブページのスクリーンショットを撮る
- アプリケーション内からGoogle検索を実行
- データフィードとBright DataのWeb Scraper APIを使用して、オンデマンドでコレクションをトリガーする。
はじめにLlamaIndexとは?
AIの時代以前は、データ収集はもろくメンテナンスの多いプロセスだった。サイトのレイアウトを1つ変更するだけで、パイプライン全体が壊れてしまうこともあった。現代では、適切なツールを使っている限り、そのようなことはない。
LlamaIndexは、言語モデルを外部のツールやデータソースに接続します。LlamaIndexには、これらのツールセットと最小限の機能で動作するように構築された最小限のモデルが同梱されています。特に私たちのケースでは、LlamaIndexはBright DataのMCPサーバーと統合することができます。
次のセクションでは、LlamaIndexのBright Dataツールセットの機能について説明します。Pythonがインストールされていることを確認してください。
前提条件
ここでの要求は驚くほど軽い。単純なスクレイピング操作であれば、LLMすら必要ない。必要なのはLlamaIndexとBright Data APIキー、それだけだ!
ラマインデックス
LlamaIndexは、以下のコマンドでインストールできるツール一式を提供している。ウェブをスクレイピングするだけなら、これは厳密には必要ない。
pip install llama-index
同社のブライト・データ・ツールは、pip経由で以下のコマンドでインストールできる。
pip install llama-index-tools-brightdata
ブライトデータ
まず、Bright Dataのアカウントが必要です。このリンクからUnlockerの無料トライアルにサインアップできます。アカウントを取得したら、APIキーを保存します。
APIキーは、Bright Dataの「プロキシ」ダッシュボードまたはユーザー設定で確認できます。
LlamaIndexによるスクレイピング
BrightDataToolSpec:Bright Data MCPへの架け橋
LlamaIndexはBrightDataToolSpec
クラスへのアクセスを提供します。以下のスニペットは、すべてのツールへのアクセスを設定します。APIキーを自分のもの、ゾーン名を自分の個人的なゾーンに置き換えることを忘れないでください。
from llama_index.tools.brightdata import BrightDataToolSpec
brightdata = BrightDataToolSpec(
api_key="your-api-key",
zone="your-zone-name")
マークダウンとしてスクレイプ
以下のスニペットは、任意のページをスクレイピングし、その内容をマークダウンとして返すように設定します。scrape_as_markdown()
メソッドがすべてやってくれます。
from llama_index.tools.brightdata import BrightDataToolSpec
brightdata = BrightDataToolSpec(
api_key="your-api-key",
zone="your-zone-name")
result = brightdata.scrape_as_markdown(url="https://www.amazon.com")
print(result.text)
以下は、このコマンドのサンプル出力だ。ご覧の通り、Amazonのデータをスクレイピングし、マークダウンに変換することに成功している。

## Skip to
* [ Main content](#skippedLink)
---
## Keyboard shortcuts
* Search
alt + /
* Cart
shift + alt + C
* Home
shift + alt + H
* Orders
shift + alt + O
* Show/Hide shortcuts
shift + alt + Z
To move between items, use your keyboard's up or down arrows.
[ .us ](/ref=nav%5Flogo)
Delivering to Bothell 98011 Update location
All
Select the department you want to search in All Departments Alexa Skills All The Best Pets Amazon Autos Amazon Devices Amazon Fresh Amazon Global Store Amazon Haul Amazon One Medical Amazon Pharmacy Amazon Resale Appliances Apps & Games Arts, Crafts & Sewing Audible Books & Originals Automotive Parts & Accessories Baby Beauty & Personal Care Books CDs & Vinyl Cell Phones & Accessories Clothing, Shoes & Jewelry Women's Clothing, Shoes & Jewelry Men's Clothing, Shoes & Jewelry Girl's Clothing, Shoes & Jewelry Boy's Clothing, Shoes & Jewelry Baby Clothing, Shoes & Jewelry Collectibles & Fine Art Computers Credit and Payment Cards Digital Music Electronics Garden & Outdoor Gift Cards Grocery & Gourmet Food Handmade Health, Household & Baby Care Home & Business Services Home & Kitchen Industrial & Scientific Just for Prime Kindle Store Luggage & Travel Gear Luxury Stores Magazine Subscriptions Metropolitan Market Movies & TV Musical Instruments Office Products Pet Supplies Premium Beauty Prime Video Same-Day Store Smart Home Software Sports & Outdoors Subscribe & Save Subscription Boxes Tools & Home Improvement Toys & Games Under $10 Video Games Whole Foods Market
Search Amazon
[ EN ](/customer-preferences/edit?ie=UTF8&preferencesReturnUrl=%2F&ref%5F=topnav%5Flang)
[ Hello, sign in Account & Lists ](https://www.amazon.com/ap/signin?openid.pape.max%5Fauth%5Fage=0&openid.return%5Fto=https%3A%2F%2Fwww.amazon.com%2F%3F%5Fencoding%3DUTF8%26ref%5F%3Dnav%5Fya%5Fsignin&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier%5Fselect&openid.assoc%5Fhandle=usflex&openid.mode=checkid%5Fsetup&openid.claimed%5Fid=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier%5Fselect&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0)
[ Returns & Orders ](/gp/css/order-history?ref%5F=nav%5Forders%5Ffirst) [ 0 Cart ](/gp/cart/view.html?ref%5F=nav%5Fcart)
[ All ](/gp/site-directory?ref%5F=nav%5Fem%5Fjs%5Fdisabled)
* [Amazon Haul](/haul/store?ref%5F=nav%5Fcs%5Fhul%5Fdisb)
* [Medical Care ](https://health.amazon.com/prime?ref%5F=nav%5Fcs%5Fall%5Fhealth%5Fingress%5Fonem%5Fh)
* [Saks](/luxurystores/saks?ref%5F=nav%5Fcs%5Fsaks%5Fdisc)
* [Best Sellers](/gp/bestsellers/?ref%5F=nav%5Fcs%5Fbestsellers)
* [Amazon Basics](/Amazon%5FBasics?channel=discovbar&field-lbr%5Fbrands%5Fbrowse-bin=AmazonBasics&ref%5F=nav%5Fcs%5Famazonbasics)
* [New Releases](/gp/new-releases/?ref%5F=nav%5Fcs%5Fnewreleases)
* [Registry](/gp/browse.html?node=16115931011&ref%5F=nav%5Fcs%5Fregistry)
* [Groceries ](/fmc/learn-more?ref%5F=nav%5Fcs%5Fgroceries)
* [Today's Deals](/deals?ref%5F=nav%5Fcs%5Fgb)
* [Gift Cards ](/gift-cards/b/?ie=UTF8&node=2238192011&ref%5F=nav%5Fcs%5Fgc)
* [Smart Home](/Smart-Home/b/?ie=UTF8&node=6563140011&ref%5F=nav%5Fcs%5Fsmart%5Fhome)
* [Music](/music/player?ref%5F=nav%5Fcs%5Fmusic)
* [Prime ](/prime?ref%5F=nav%5Fcs%5Fprimelink%5Fnonmember)
* [Customer Service](/gp/help/customer/display.html?nodeId=508510&ref%5F=nav%5Fcs%5Ffs%5Fhub%5Fnavbar%5Fc)
* [Books](/books-used-books-textbooks/b/?ie=UTF8&node=283155&ref%5F=nav%5Fcs%5Fbooks)
* [Pharmacy](https://pharmacy.amazon.com/?nodl=0&ref%5F=nav%5Fcs%5Fpharmacy)
* [Luxury Stores](/luxurystores?ref%5F=nav%5Fcs%5Fluxury)
* [Amazon Home](/home-garden-kitchen-furniture-bedding/b/?ie=UTF8&node=1055398&ref%5F=nav%5Fcs%5Fhome)
* [Fashion](/amazon-fashion/b/?ie=UTF8&node=7141123011&ref%5F=nav%5Fcs%5Ffashion)
* [Toys & Games](/toys/b/?ie=UTF8&node=165793011&ref%5F=nav%5Fcs%5Ftoys)
* [Beauty & Personal Care](/Beauty-Makeup-Skin-Hair-Products/b/?ie=UTF8&node=3760911&ref%5F=nav%5Fcs%5Fbeauty)
* [Sell](/b/?%5Fencoding=UTF8&ld=AZUSSOA-sell&node=12766669011&ref%5F=nav%5Fcs%5Fsell)
* [Gift Shop](/gcx/Gifts-for-Everyone/gfhz/?ref%5F=nav%5Fcs%5Fgiftfinder)
* [Automotive](/automotive-auto-truck-replacements-parts/b/?ie=UTF8&node=15684181&ref%5F=nav%5Fcs%5Fautomotive)
* [Home Improvement](/Tools-and-Home-Improvement/b/?ie=UTF8&node=228013&ref%5F=nav%5Fcs%5Fhi)
* [Computers](/computer-pc-hardware-accessories-add-ons/b/?ie=UTF8&node=541966&ref%5F=nav%5Fcs%5Fpc)
* [Sports & Outdoors](/sports-outdoors/b/?ie=UTF8&node=3375251&ref%5F=nav%5Fcs%5Fsports)
[Prime Day is July 8-11](/primeday/?%5Fencoding=UTF8&ref%5F=nav%5Fswm%5FUS%5FPD25%5FLU%5FGW%5FSWM%5FAnnounce&pf%5Frd%5Fp=72020f4f-d636-4d60-9e39-399532eba237&pf%5Frd%5Fs=nav-sitewide-msg-text&pf%5Frd%5Ft=4201&pf%5Frd%5Fi=navbar-4201&pf%5Frd%5Fm=ATVPDKIKX0DER&pf%5Frd%5Fr=JA1EM1AGN54HEE871RFM)
スクリーンショットを撮る
スクリーンショットは、ウェブをスクラップする際のもう一つの優れたツールである。最近のLLMのほとんどは、画像を見て解釈することができる。以下のスニペットでは、get_screenshot()
メソッドでページのスクリーンショットを撮っています。
from llama_index.tools.brightdata import BrightDataToolSpec
brightdata = BrightDataToolSpec(
api_key="your-api-key",
zone="your-zone-name")
result = brightdata.get_screenshot(url="https://example.com", output_path="my-screenshot.png")
下のショットはBrightDataToolSpecから
。これはPythonの中で最も簡単なスクリーンショットの方法かもしれません。
検索エンジン
その前のツール同様、単純なメソッドsearch_engine()
を使って検索エンジンを呼び出す。デフォルトではGoogleを使いますが、好きな検索エンジンを使うことができます。SERPのクエリ・パラメータについては、こちらを参照してください。
以下の検索エンジンが利用可能です。
- グーグル
- ビング
- ヤンデックス
- ダックダックゴー
from llama_index.tools.brightdata import BrightDataToolSpec
brightdata = BrightDataToolSpec(
api_key="your-api-key",
zone="mcp_unlocker")
result = brightdata.search_engine(
query="Top News Articles"
)
with open("output.json", "w") as file:
json.dump(json.loads(result.json()), file, indent=4)
データをJSONファイルにダンプする前に、json.loads()を呼び出して
いることに注目してください。.json()を
使用しても、LlamaIndexはJSONを文字列として出力します。dictの
ように扱いたい場合は、json.loads()が
従来のJSONオブジェクトに変換してくれます。
スクレイパーが書き込むJSONファイルの一部である。
{
"id_": "34bcf1ea-998a-48ce-beb2-0d6feff950e1",
"embedding": null,
"metadata": {
"query": "Top News Articles",
"engine": "google",
"url": "https://www.google.com/search?q=Top%20News%20Articles&num=10"
},
"excluded_embed_metadata_keys": [],
"excluded_llm_metadata_keys": [],
"relationships": {},
"metadata_template": "{key}: {value}",
"metadata_separator": "\n",
"text_resource": {
"embeddings": null,
"text": "# Accessibility Links\n\nSkip to main content[Accessibility help](https://support.google.com/websearch/answer/181196?hl=en)\n\nAccessibility feedback\n\n[](https://www.google.com/webhp?hl=en&ictx=0&sa=X&ved=0ahUKEwizmMaNvoCOAxUmmYkEHa58MagQpYkNCAo)\n\nPress / to jump to the search box\n\nTop News Articles\n\n[Sign in](https://accounts.google.com/ServiceLogin?hl=en&passive=true&continue=https://www.google.com/search%3Fq%3DTop%2BNews%2BArticles%26num%3D10%26oq%3DTop%2BNews%2BArticles%26uule%3Dw%2BCAIQICINVW5pdGVkIFN0YXRlcw%26hl%3Den%26sourceid%3Dchrome%26ie%3DUTF-8&ec=GAZAAQ)\n\n# Filters and Topics\n\n[AI Mode](/search?q=Top+News+Articles&sca%5Fesv=62890ff6c1b2e448&hl=en&udm=50&
ウェブスクレーパーAPI
スクレイピング APIでは、オンデマンドでコレクションをトリガーするデータフィードを作成できます。以下のコードでは、web_data_feed() を
使用して Scraper API からコレクションをトリガーしています。
from llama_index.tools.brightdata import BrightDataToolSpec
brightdata = BrightDataToolSpec(
api_key="your-api-key",
zone="mcp_unlocker")
result = brightdata.web_data_feed(
source_type="linkedin_person_profile",
url="https://www.linkedin.com/in/williamhgates/",
timeout=600,
polling_interval=30)
print(result)
しばらくしたら、ログのページに移動してください。すべてのコレクションが記録され、ボタンをクリックするだけでダウンロードできるようになっているはずです。
結論
これでウェブスクレイピングがレベルアップし、作業量が大幅に削減された。LlamaIndex、Bright Data、そしてほんの数行のPythonがあれば、ウェブから欲しいデータをほとんど引き出すことができる。
マークダウンの抽出、スクリーンショットのキャプチャ、Google検索の実行、完全なスクレイピングジョブのトリガーなど、LlamaIndexとBright Dataは貴重なデータを収穫する力を提供します。
次のレベルに進む準備はできていますか?このパワーツールのコンボをライブ・データ・パイプラインに接続したり、AIエージェントを構築したりしましょう。
今すぐ無料トライアルに登録して、データ収集のレベルアップを図りましょう!