Python 如何模拟点击;“下一步”;直到最后?
我不知道如何模拟单击“下一步”,我当前的代码将在第一个实例中停止..我还创建了一个for循环,但它只会说对象不可编辑..有没有办法修改我的代码Python 如何模拟点击;“下一步”;直到最后?,python,selenium,web,web-scraping,Python,Selenium,Web,Web Scraping,我不知道如何模拟单击“下一步”,我当前的代码将在第一个实例中停止..我还创建了一个for循环,但它只会说对象不可编辑..有没有办法修改我的代码 from selenium import webdriver browser = webdriver.Firefox() import time browser.get('https://www.autocodes.com/obd-code-list/powertrain/1') linkElem = browser.find_element_by_c
from selenium import webdriver
browser = webdriver.Firefox()
import time
browser.get('https://www.autocodes.com/obd-code-list/powertrain/1')
linkElem = browser.find_element_by_css_selector("#pag > a")
type(linkElem)
linkElem.click() # follows the "Next" link
可能是您的元素id或“linkElem”的类型在第一次单击后更改 请尝试以下代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
browser = webdriver.Firefox()
import time
count = 0
browser.get('https://www.autocodes.com/obd-code-list/powertrain/1')
while(1):
try:
linkElem = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, "//div[@id='pag']//a[contains(text(),'Next')]")))
except:
import traceback
traceback.print_exc()
print "last page reached."
break;
# type(linkElem)
count += 1
print "count " , count
linkElem.click() # follows the "Next" link
time.sleep(1)
代码持续检查
下一个元素是否存在于无限while循环中。如果存在,请单击它。否则,打破循环
注意:count
变量作为调试语句添加,以了解循环计数。如果不需要,您可以删除与其相关的代码
注意:类似地,添加了traceback
以打印完整的跟踪。只需打印异常跟踪以供参考
注意:break
关键字,当无限循环到达最后一页并从中出来时,它将中断无限循环,而循环将继续执行下一个代码
参考资料:
收益率是什么?抱歉忘了告诉我我刚刚开始python…没问题,请检查示例中的产量部分,并使用一个简单的沙盒案例进行尝试,以了解NDOKAY,但希望有人有代码或其他东西,我通过演示快速学习,不是填鸭式的,因为当有人给我看一个代码时,我会修改它并进行实验,你可以通过css选择器(“pag a”)找到所有的链接元素,并且只使用linkElem[-2]
不确定,但是当我开始在“动力总成/1”页面中获取css选择器时。它说#pag>a:n个孩子(1),然后是“…动力总成/2”直到最后一页,它都会说:第n个孩子(3)..这可能是原因吗?我怎么能修好它?是的!这就是问题所在。第一次点击后。元素位置发生了变化,所以为什么要取消调用以进行迭代。感谢您提供的信息,我刚刚开始编程,他们说python相对来说是一篇短文,所以我选择它。这段代码非常完美!!!我已经看过这种编码,但由于我有限的编程知识,我不鼓励修补它。非常感谢。我将逐段研究此代码。添加注释以更好地理解逻辑。我希望它能帮助你。你可以通过提供一些声誉,接受答案,祝我在新的一年里好运:)(只要它能帮助你)。这是表达感谢的最好方式!欢迎来到SO!愚蠢的声明但我也是stackoverflow的新手,我已经对你的答案投了赞成票。如果你能指导我关于声誉的事情,那会有所帮助。在你达到25或20
rep(不确定)之前,你不能投赞成票。不过,你可以接受自己问题的答案(在我的答案旁边打勾)