使用 Python 查找网站的最后一页

Finding the last page in a website using Python

我正在编写代码来抓取亚马逊网站上的产品价格。

我正在尝试找到仍然有可用产品的网站的最后一页。

导航页面如下所示: Navigation Panel

最后一页是 8,已禁用。我的程序遍历每个页面并提取产品信息。从第 8 页提取后,程序应停止。但是当我试图以文本形式获取数字 8 时,我得到的是 ... 文本。

我尝试使用 bs4 来获取文本。但是 HTML 代码和其他标签对于 8...

是相同的
<li class="a-disabled" aria-disabled="true">...</li>
<li class="a-disabled" aria-disabled="true">8</li>

所以我尝试使用 selenium 的 find_element_by_xpath 并将其转换为文本以找到最大页数。但是我收到 NoSuchElementException 错误,它说它无法找到 XPath。

这是我导航到下一页并提取产品信息的代码的一部分:

def navigate_to_next_page():
    try:
        max_pages = driver.find_element_by_xpath("/html/body/div[1]/div[2]/div[1]/div/div[1]/div/span[3]/div[2]/div[20]/span/div/div/ul/li[6]").text
        print(max_pages)
    except NoSuchElementException:
        print("Max Page Number Not Found")
    for i in range(2,21):
        next_page_url = get_search_product_url(driver, "samsung phones") + "&page=" + str(i)
        driver.get(next_page_url)
        results = extract_webpage_information()
        records = record_product_information(results)
    return records

请忽略for i in range(2,21):。这是为了测试目的。

如果 bs4 和 selenium 方法都不起作用,我如何获得网站上的最大页面数?

我可能已经从网站中提取了最后一个页码并将其附加在 URL 中以逐页浏览每一页 - 请找到相同的工作代码。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)

driver.get('https://www.amazon.in')
SearchTextbox = wait.until(EC.visibility_of_element_located((By.XPATH, "//input[@id=\"twotabsearchtextbox\"]")))
SearchTextbox.send_keys("pencil")
SearchTextbox.send_keys(Keys.ENTER)

GetLastPageNumber = wait.until(EC.presence_of_element_located(
    (By.XPATH, "//li/a[text()=\"Next\"]/parent::li/preceding-sibling::li[contains(@aria-disabled,\"true\")][1]")))

print("Last Page Number is : " + GetLastPageNumber.text)

for i in range(int(GetLastPageNumber.text) + 1):
    myurl = "https://www.amazon.in/s?k=pencil&page={0}&qid=1618567039&ref=sr_pg_2".format(str(i))
    driver.get(myurl)

print("I'm done")

注意 - 根据您所在的国家/地区更改 URL。

如果解决了您的问题,请标记为答案。