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

时间:2021-04-16 08:21:30

标签: python selenium web-scraping beautifulsoup amazon

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

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

这是导航页面的样子: Navigation Panel

最后一页是 var hashA = new HashSet<string>(listA); listB.RemoveAll(hashA.Contains); 已禁用。我的程序遍历每个页面并提取产品信息。程序从第 8 页提取后应停止。但是当我尝试以文本形式获取数字 8 时,我得到了 8 文本。

我尝试使用 bs4 来获取文本。但是 ...8

的 HTML 代码和其他标记是相同的
...

所以我尝试使用 selenium 的 <li class="a-disabled" aria-disabled="true">...</li> <li class="a-disabled" aria-disabled="true">8</li> 并将其转换为文本以找到最大页数。但是我收到了 find_element_by_xpath 错误,它说它无法找到 XPath。

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

NoSuchElementException

请忽略 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 。这是为了测试目的。

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

1 个答案:

答案 0 :(得分:0)

我可能已经从网站上提取了最后一个页码并将其附加到 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")

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

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

相关问题