【解決方法】Python のウェブスクレイピングの問題


私は、beautifulsoupモジュールを使用して、pythonでラップトップ検索ページno 1でwebscraping amazon.inを実行しようとしました。 製品の名前と賞品のリストを取得しようとすると、必要なリストではなく、値が 1 つしか表示されません。
ここにアマゾンのウェブサイトのリンクがあります: – [DELETED]

私が試したこと:

これが私のコードです

from bs4 import BeautifulSoup
import requests


url= "https://www.amazon.in/s?k=laptop&crid=11C0N6A7MKTOH&sprefix=laptop%2Caps%2C1151&ref=nb_sb_noss_1"
page = requests.get(url)

soup = BeautifulSoup(page.content, 'html.parser')
lists = soup.find_all('div',class_="s-main-slot s-result-list s-search-results sg-row")
print(lists)

for list in lists:
        Name = list.find('span',class_="a-size-medium a-color-base a-text-normal").text.replace('\n', '')
        Price = list.find('span', class_="a-price-whole").text.replace('\n', '')
print(Name)
print(Price)

ここに私の出力があります

HP 15s-Ryzen 3 3250U 8GB SDRAM/256GB SSD 15.6inch(39.6cm) HD, Micro-Edge Laptop/AMD Radeon Graphics/Dual Speakers/Win 11 Home/MS Office/Fast Charge/Jet Black/1.69Kg, 15s-ey1508AU
29,999

解決策 2

引用:
Python
lists = soup.find_all('div',class_="s-main-slot s-result-list s-search-results sg-row")

返された HTML を見てください – 1 つしかありません <div class="s-main-slot ..."> エレメント。

コードはその 1 つの要素をループ処理し、リスト全体から名と価格のスパンを見つけます。

コードを変更してすべてを検索する <div class="s-result-item ..."> 代わりにアイテムを使用すると、運が良くなる可能性があります。

Python
lists = soup.select("div.s-result-item")

注意: 使用する select それよりも find_all、完全に指定できないため class 要素ごとに変化する属性。

または、 data-component-type 検索結果アイテムを見つけるための属性:

Python
lists = soup.select('div[data-component-type="s-search-result"]')

解決策 1

引用:

それを解決する方法はありますか

Amazon API を使用してみることができます。 販売パートナー API[^]

コメント

タイトルとURLをコピーしました