Amazon satıcı rating web scraping

merhaba arkadaşlar. amazon web kazımaya izin vermiyor ama küçük çaplı bir proje yapmaya çalışıyorum. https://www.amazon.com/sp?seller=A1BZ5E31ZCG12M bu sayfadaki son 12 aylık yorumları (yaklaşık 750 adet) almak istiyorum ancak her seferinde hata alıyorum. Bir önerisi olan var mı?

Onerim hata olusturmayacak bir yontem kullanmaniz.

bkz: Soru Sorarken Sıkça Düşülen Hatalar #5, #13

1 Beğeni

Header’ı biraz modifiye edince bot ile tarayıcı arasındaki farkı anlamıyor sanırım.

import requests
from bs4 import BeautifulSoup
url = "https://www.amazon.com/sp?seller=A1BZ5E31ZCG12M"
header = {"accept-language": "en-US,en;q=0.9",
"accept-encoding": "gzip, deflate, br",
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36",
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"}
bs = BeautifulSoup(requests.get(url,headers=header).text,features="lxml")
print(bs.prettify())

Bu kod kaynak dosyasını indiriyor.
Kaynak: Web Scraping Amazon Product Data & Pricing using Python

Teşekkürler. soruda da belirttiğim gibi bloklama sorundu. denemeler yapmama rağmen bloklamayı aşamıyordum. inceliyecem

amazon bloklamaya devam ediyor

headers = {"User-Agent": useragents[random.randint(0, len(useragents) - 1)],
           "accept-language": "en-US,en;q=0.9", "accept-encoding": "gzip, deflate, br",
           "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"}

resp = requests.get(target_url, headers=headers)

if response.status_code == 200:
    soup = BeautifulSoup(response.content, 'html.parser')
    review_element = soup.find('span', {'id': '-expanded', 'class': 'expandable-expanded-text'})
    
    if review_element:
        review_text = review_element.text.strip()
        print("Customer Review:", review_text)
    else:
        print("No customer review found.")
else:
    print("Failed to retrieve page. HTTP status code:", response.status_code)

Ben Chromium kullanıyorum request-header’larını şöyle aldım:
1 - Söz konusu linki açın.
2 - F12 ile developer console’u açın.
3 - Network tab’ını açın
4 - Filter’a sp?seller=A1BZ5E31ZCG12M yazın.
Büyük ihtimalle orada bulunan header bilgileri işinize yarayacaktır. Hatta bana şu bilgileri verdi:

:authority:
www.amazon.com
:method:
GET
:path:
/sp?seller=A1BZ5E31ZCG12M
:scheme:
https
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding:
gzip, deflate, br, zstd
Accept-Language:
en-US,en;q=0.9
Cache-Control:
max-age=0
Cookie:
session-id=136-8924359-7806211; session-id-time=2082787201l; i18n-prefs=USD; ubid-main=131-1638980-0581958; sp-cdn="L5Z9:TR"; session-token=Fqlr4YYcoDDNMh18Y9Z2l1rDRab6XuA0lkP+ig1EnrqtjgSzBoHhsqpuH82FUjaT9jUa/zYE85CRRIExCc29V8PvTOakf9XEtqnIaBcNKrvJ84X5Uw5tgV2JzkStTkjDtxYgkl1JD0DqJu5f+J/8VRRuOwHQ2aTDHm2GWnCvn+2SmRhjN/QotOXHo+9DhChq1yJJl4z35lKUZtJe2RxRmKM6WU/c/tIN1u3LbhzZJjGgPbTpKFqn66PAUYs9fcTQ65sKHd6h0B1/A/xNkhjdznJJNxf2PtHkYLYqLiHamYq27eRSPrxmH4cmebBdRUjr93Pi5VYCh1MyQ+vjy0HPTRRBZDDWbx19; csm-hit=tb:WW4V1PE9SEW7EBZ1PZW4+s-WW4V1PE9SEW7EBZ1PZW4|1714386200644&t:1714386200644&adb:adblk_yes
Device-Memory:
8
Downlink:
10
Dpr:
1
Ect:
4g
Priority:
u=0, i
Referer:
https://forum.yazbel.com/
Rtt:
50
Sec-Ch-Device-Memory:
8
Sec-Ch-Dpr:
1
Sec-Ch-Ua:
"Not-A.Brand";v="99", "Chromium";v="124"
Sec-Ch-Ua-Mobile:
?0
Sec-Ch-Ua-Platform:
"Linux"
Sec-Ch-Viewport-Width:
887
Sec-Fetch-Dest:
document
Sec-Fetch-Mode:
navigate
Sec-Fetch-Site:
cross-site
Sec-Fetch-User:
?1
Upgrade-Insecure-Requests:
1
User-Agent:
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36
Viewport-Width:
887

bunu da inceliycem. teşekkürler. galiba problem scraping aşamasına access engeli. amazon api kullanın tarzında uyarılar veriyor