尝试 运行 时终端显示 []

Terminal showing [] when trying to run

我正在关注我在 YouTube 上找到的价格跟踪器教程。但是,当我尝试在终端中执行“python main.py”时,它向我显示:

(venv) julia@Julias-Maccie-3 pythonProject1 % python main.py

[]

[]

(venv) julia@Julias-Maccie-3 pythonProject1 % 

两个[]所在的地方,应该是给我看商品的价格和标题。

这是我的代码:

import requests
from bs4 import BeautifulSoup

URL = 'https://www.lookfantastic.nl/olaplex-no.3-hair-perfector-100ml/11416400.html'

headers = {"User-Agent": 'My user agent'}

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

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


title = soup.find_all("div", class_="productName_title")
price = soup.find_all("div", class_="productPrice_price")
converted_price = price[0:4]

print(converted_price)
print(title)

有人知道怎么解决吗?

注意:我确实填写了我的用户代理。只是出于这个问题的目的将其删除

检查您的 soup 并调整您希望找到的标签名称:

title = soup.find_all("h1", class_="productName_title")
price = soup.find_all("p", class_="productPrice_price")

输出:

[<p class="productPrice_price" data-product-price="price">
                      €22,45
                  </p>, <p class="productPrice_price" data-product-price="price">
                              €22,45
                          </p>]
[<h1 class="productName_title" data-product-name="title">Olaplex No.3 Hair Perfector 100ml</h1>, <h1 class="productName_title" data-product-name="title">Olaplex No.3 Hair Perfector 100ml</h1>]

请注意,find_all() 会给你一个 ResultSet,如果你只想获得第一手信息,请使用 find() 而不是

title = soup.find("h1", class_="productName_title").get_text(strip=True)
price = soup.find("p", class_="productPrice_price").get_text(strip=True)
converted_price = price[1:]

输出:

22,45
Olaplex No.3 Hair Perfector 100ml