【发布时间】:2023-03-24 18:40:02
【问题描述】:
我正在编写一个网络爬虫,它使用现有电子表格中的数据从网站中提取数据。它使用特定列中的代码(即引用产品)来搜索站点。但是,当搜索一种产品时,会显示多个,只有一个是正确匹配的。我创建了一个可以搜索正确代码并通过find_element_by_xpath 选择产品的系统,但它不考虑多个页面。我的目标是(在找不到代码的情况下)移动到下一页并搜索相同的代码而不移动到下一个 excel 行,当到达最后一页时停止。我已经找到了一段可以移至下一页的代码:
try:
_driver.find_element_by_class_name("next").click()
print("Navigating to Next Page")
except TimeoutException as e:
print("Final Page")
break
但是,我不确定在不破坏代码或逐行向下移动的情况下,我将在何处/如何实现这一点。 这是到目前为止我的代码如何工作的 sn-p(显然是简化的)
for i in data.index: #(_data is spreadsheet column)
try:
# locate product code
# copy product link
# navigate to link
try:
# wait for site to load
# Copy data to Spreadsheet
except TimeoutException:
# Skip if site takes too long
except Exception as e:
# Catch any possible exceptions and continues loop (normally when product cannot be found)
任何帮助都将不胜感激,无论是如何实现上面的代码 sn-p,或者是从一个页面移动到另一个页面的更好方法。如果需要,我可以提供网站链接或我的代码的 sn-ps 链接:)
【问题讨论】:
-
将 try/except 调用放在一个函数中,然后在需要时调用该函数。
-
您可以使用布尔变量,并在 try 块成功时将该布尔变量更改为 true。然后将所有的 try 和 except 放在一个 while 循环中,检查这个布尔变量是否仍然为 false,所以它会执行 try 和 catch,直到 try 块成功。
-
@Wahalez 哪个 try 块?然后当你在一个while循环中说所有的尝试和接受时,我假设你的意思是下一页sn-p。
-
@Wahalez 以及 try/except while 循环的确切位置?因为我需要它运行而不增加 _data.index 中的 i
-
@DanCurry 尝试/排除下一页功能?这可能行得通,我试一试
标签: python selenium loops try-catch