Python, multi page scrapper BeautifulSoup

0

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()
2

Mój problem polega na tym, że nie potrafię wyciągnąć z kodu strony maksymalnej liczby, która określa ostatnią stronę podkategorii.

$ python3 -c 'import bs4, requests; r = requests.get("https://www.x-kom.pl/g-2/c/159-laptopy-notebooki-ultrabooki.html"); s = bs4.BeautifulSoup(r.text, "html.parser"); print(s.select_one(".pagination-wrapper > div > span > span").text)'
115
$ 

1 użytkowników online, w tym zalogowanych: 0, gości: 1