【发布时间】:2017-11-05 14:21:52
【问题描述】:
这是The Link这个帖子的后续问题。我希望我的脚本从第一页解析姓名和电话,然后单击下一页按钮并执行相同操作,直到所有下一页链接都用尽。但是,当我单独执行下面的脚本(while 循环中的部分)时,它可以工作,但是当两者都被包裹在 while 循环中时,后一部分,我的意思是分页部分无法执行。我尝试了几次,但结果总是一样的。我该如何修复它,以便它从第一页解析文档并单击下一页链接来完成剩下的工作?
脚本:
while True:
for item in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".ajaxBtn"))):
item.click()
time.sleep(3)
root = fromstring(driver.page_source)
try:
name = root.cssselect("#popclick .modal-header .h4")[0].text.strip()
phone = root.cssselect("td:contains('Phone:')+td")[0].text.strip()
except:
pass
print(name,phone)
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#popclick .modal-header button"))).click()
driver.execute_script("window.scrollTo(0, {})".format(item.location['y']))
try:
link = wait.until(EC.element_to_be_clickable((By.LINK_TEXT, ">")))
link.click()
wait.until(EC.staleness_of(link))
except:
break
【问题讨论】:
-
如何在任何地方插入
time.sleep(3)。手动和while-loop之间的区别只是我认为的时间。
标签: python python-3.x selenium selenium-webdriver web-scraping