'Terminal showing [] when trying to run

I am following a price tracker tutorial I found on YT. However, when i try to do "python main.py" in the terminal, it shows me this:

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

[]

[]

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

Where the two [] are, it is supposed to show me the price and title of the product.

Here's my code:

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)

Does anyone know how to solve this?

NOTE: I did fill in my user agent. Just removed it for the purpose of this question



Solution 1:[1]

Check your soup and adjust the tag names you expect to find:

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

Output:

[<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>]

Be aware that find_all() will give you a ResultSet if you like to get only first information go with find() instead

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:]

Output:

22,45
Olaplex No.3 Hair Perfector 100ml

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1