アリババは世界最大の B2B 電子商取引プラットフォームの 1 つであり、大量の商品情報を提供し、バイヤーとサプライヤーの間の架け橋としての役割を果たしています。しかし、このような膨大な製品ライブラリの中から適切な製品を見つけるには、多くの時間と労力がかかります。作業効率を向上させるために、クローラー ツールを使用してアリババの商品データをバッチで収集できます。
以下は、クローラー ツールを使用して Alibaba 商品データをバッチで収集する方法の具体的な手順です。
1. 対象のWebサイトを分析する
クロールを開始する前に、ターゲット Web サイトを分析する必要があります。アリババの公式サイトでは、キーワードを入力して商品を検索できます。検索結果ページには、製品名、価格、サプライヤー、地域などを含む複数の製品情報が表示されます。開発者ツールを使用してページ構造を表示し、後続のデータ収集のためのパラメーターをリクエストできます。
2. 適切なクローラー ツールを選択する
Python の Scrapy フレームワークや Beautiful Soup ライブラリなど、自分のニーズに応じて適切なクローラー ツールを選択してください。ここでは、Scrapy フレームワークを例として取り上げます。Scrapy フレームワークは、Web ページ間を行き来し、Web ページから構造化データを抽出するために使用できる効率的な Python クローラー フレームワークです。同時に、Scrapy は強力なデータ処理およびストレージ機能も提供します。
3. クローラー プログラムを作成する
Scrapy フレームワークでは、プロジェクトを作成し、Item、Spider、Pipeline などの 3 つのコア コンポーネントを定義し、対応する Python コードを記述してデータ収集を実現する必要があります。
スパイダーを定義するときは、クロールする Web サイトの URL を指定する必要があります。その後、XPath または CSS セレクターを使用してページ要素を見つけることができます。ここでは XPath を例に挙げます。たとえば、次のコードは検索結果ページの製品名を取得できます。
class AlibabaSpider(scrapy.Spider):
name = 'alibaba'
start_urls = ['https://www.alibaba.com/trade/search?fsb=y&IndexArea=product_en&CatId=&SearchText=iphone']
def parse(self, response):
products = response.xpath('//div[@class="item-main"]')
for product in products:
name = product.xpath('.//h2/text()').get()
yield {'name': name}
- データの保存
Scrapy は、JSON、CSV、MySQL などのさまざまなデータ処理および保存方法も提供します。Pipeline では、収集したデータを指定した場所に保存するコードを作成できます。
class AlibabaPipeline:
def __init__(self):
self.file = open('products.json', 'w')
self.exporter = JsonItemExporter(self.file, encoding='utf-8', ensure_ascii=False)
self.exporter.start_exporting()
def close_spider(self, spider):
self.exporter.finish_exporting()
self.file.close()
def process_item(self, item, spider):
self.exporter.export_item(item)
return item
- クローラーを実行する
クローラー プログラムを作成したら、コマンド ラインにプログラムを入力して実行するだけですscrapy crawl alibaba
。この時点で、プログラムは指定された Web サイトのクロールを開始し、収集された製品データを指定された場所に保存します。
上記は、クローラー ツールを使用して Alibaba の商品データをバッチで収集するための具体的な手順です。もちろん、実際の開発では、アンチクローラー、動的 Web ページ、ページングなど、特定の状況に応じて調整および変更する必要がある多くの問題に遭遇します。上記の方法が面倒な場合は、パッケージ化された電子商取引 API インターフェイスを見つけて直接使用することもできます。