Python:用bs4、BeautifulSoup抓取亚马逊网页

Python:用bs4、BeautifulSoup抓取亚马逊网页,python,html,web-scraping,beautifulsoup,Python,Html,Web Scraping,Beautifulsoup,我试图从亚马逊的网页上阅读特定信息(名称、价格等)。 为此,我使用了大多数教程中建议的“BeautifulSoup”和“requests”。我的代码可以加载页面并找到我正在查找的项目,但实际无法获取它。我检查了该项目确实存在的网页 这是我的密码: #import time import requests #import urllib.request from bs4 import BeautifulSoup URL = ('https://www.amazon.de/dp/B008JCUXNK

我试图从亚马逊的网页上阅读特定信息(名称、价格等)。 为此,我使用了大多数教程中建议的“BeautifulSoup”和“requests”。我的代码可以加载页面并找到我正在查找的项目,但实际无法获取它。我检查了该项目确实存在的网页

这是我的密码:

#import time
import requests
#import urllib.request
from bs4 import BeautifulSoup

URL = ('https://www.amazon.de/dp/B008JCUXNK/?coliid=I9G2T92PZXG06&colid=3ESRXLK53S0NY&psc=1&ref_=lv_ov_lig_dp_it')

# user agent = browser information (get via google search "my user agent")
headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:80.0) Gecko/20100101 Firefox/80.0'}

page = requests.get(URL, headers=headers)# webpage

soup = BeautifulSoup(page.content, 'html.parser')# webpage as html

title = soup.find(id="productTitle")


print(title)
标题始终为“无”,因此调用get_Text将导致错误。
有谁能告诉我出了什么问题吗?

您的代码是100%正确的,但我已经尝试了您的代码并检查了
页面内容的值。它包含验证码。看起来亚马逊不想让你去刮他们的网站

您可以在此处阅读您的案例:


但我也建议您阅读亚马逊的条款和条件,以确定您是否可以合法使用它。

找到了通过验证码的方法。 请求需要包含更好的标头。 例如:

有关状态代码的信息,请使用谷歌html状态代码。 希望这能帮助任何有类似问题的人


干杯

数据可以通过JavaScript动态加载。您得到了响应,但Js尚未加载数据。只需使用或任何其他等待页面和JavaScript加载的框架即可。感谢您的快速anwser mate。亚马逊这样做是有道理的。我检查了你发给我的链接,但即使有高级标题,我也没有得到信息。但无论如何,这应该是可能的。毕竟我可以用我的浏览器访问这个网页。你知道有什么办法可以绕过验证码吗?
import datetime    
import requests

KEY = "YOUR_KEY_HERE"
date = datetime.datetime.now().strftime("%Y%m%d")

BASE_REQUEST = ('https://www.amazon.de/Philips-Haartrockner-ThermoProtect-Technologie-HP8230/dp/B00BCQIIMS?pf_rd_r=T1T8Z7QTQTGYM8F7KRN5&pf_rd_p=c832d309-197e-4c59-8cad-735a8deab917&pd_rd_r=20c6ed33-d548-47d7-a262-c53afe32df96&pd_rd_w=63hR3&pd_rd_wg=TYwZH&ref_=pd_gw_crs_zg_bs_84230031')

headers = {
    'dnt': '1',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36',
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'sec-fetch-site': 'same-origin',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-user': '?1',
    'sec-fetch-dest': 'document',
    'referer': 'https://www.amazon.com/',
    'accept-language': 'en-GB,en-US;q=0.9,en;q=0.8',
}

payload = {
    "api-key": KEY,
    "begin_date": date,
    "end_date": date,
    "q": "Donald Trump"
}

r = requests.get(BASE_REQUEST, headers=headers)

print(r.status_code)

if r.status_code == 200:
    print('success')