Python bs4 BeautifulSoup: findall 给出空括号

Python bs4 BeautifulSoup: findall gives empty bracket

当我 运行 这段代码时,它给了我一个空括号。我是网络抓取的新手,所以我不知道我做错了什么。

import requests

from bs4 import BeautifulSoup

url = 'https://www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=laptop'

r = requests.get(url)

soup = BeautifulSoup(r.text, 'html.parser')

container = soup.findAll('li', {'class': 's-result-item celwidget '})
#btw the space is also there in the html code

print(container)

结果:

[]

我尝试的是从网站上获取 html 代码,然后通过存储所有信息的 li 标签进行过滤,这样我就可以在 for 中打印出所有信息循环。

此外,如果有人想解释如何使用 BeautifulSoup,我们可以随时讨论。 谢谢大家。

因此获取产品和价格的工作代码可能如下所示。

import requests
from bs4 import BeautifulSoup

url = 'https://www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=laptop'
r = requests.get(url, headers={'User-Agent': 'Mozilla Firefox'})
soup = BeautifulSoup(r.text, 'html.parser')
container = soup.findAll('li', {'class': 's-result-item celwidget '})
for cont in container:
    h2 = cont.h2.text.strip()

    # Amazon lists prices in two ways. If one fails, use the other
    try:
        currency = cont.find('sup', {'class': 'sx-price-currency'}).text.strip()
        price = currency + cont.find('span', {'class': 'sx-price-whole'}).text.strip()
    except:
        price = cont.find('span', {'class': 'a-size-base a-color-base'})
    print('Product: {}, Price: {}'.format(h2, price))

如果这对您有进一步的帮助,请告诉我...