helloł
Na wstępie zaznaczam, że dopiero zaczynam z Pythonem i wielu rzeczy jeszcze nie wiem, a kod jest pisany w celach edukacyjnych :D
Mój problem polega na tym, że nie potrafię wyciągnąć z kodu strony maksymalnej liczby, która określa ostatnią stronę podkategorii. Tzn wiem gdzie on się znajduje ale nie wiem jak do niej dotrzeć:
<span><input name="page" type="input" value="1" id="pageNumber"> z <span>114</span></span>
Mój kod wygląda tak (jak widać napisałem dla kilku stron, ale nie wiem jak to bardziej zautomatyzować) :
from urllib.request import urlopen
from bs4 import BeautifulSoup
base_url = 'https://www.x-kom.pl/g-2/c/159-laptopy-notebooki-ultrabooki.html'
filename = "laptopy_x-kom.csv"
f = open(filename, "w")
headers = "producent, nazwa, cena" + "\n"
f.write(headers)
'''
last_page_url = base_url + "?page=" + str(page_number)
uClient = urlopen(last_page_url)
last_page_html = uClient.read()
uClient.close()
'''
for page_number in range(0, 5):
page_url = base_url + "?page=" + str(page_number)
uClient = urlopen(page_url)
page_html = uClient.read()
uClient.close()
#parsuje html
page_soup = BeautifulSoup(page_html, "html.parser")
#wyciaga poszczegolne produkty
product_list = page_soup.find("div", {"id": "productList"})
products = product_list.findAll("div", {"class": "product-item product-impression"})
for product in products:
brand = product["data-product-brand"]
name = product["data-product-name"]
price = product["data-product-price"]
print("producent: " + brand)
print("nazaw: " + name)
print("cena: " + price)
f.write(brand + "," + name.replace(",", " ") + "," + price + "\n")
f.close()