我已经使用python和selenium编写了一个脚本来从网页上删除餐馆名称。如果我硬编码我要解析的数量,它工作得很好。该页面具有延迟加载过程,并在每个滚动中显示40个名称。但是,我的脚本可以处理它。我想在脚本中改进的唯一一点是我不想对数字进行硬编码;相反,我想让它检测自己有多少并成功解析它。希望有人帮忙。这是代码:
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('https://www.yellowpages.ca/search/si/1/pizza/Toronto')
while True:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(3)
links = [posts.text for posts in driver.find_elements_by_xpath("//div[@itemprop='itemListElement']//h3[@itemprop='name']/a")]
if (len(links) == 240):
break
for link in links:
print(link)
driver.quit()
答案 0 :(得分:1)
您可以检查上一次迭代中链接的数量是否已更改
num_Of_links = -1
num = 0
while num != num_Of_links:
num_Of_links = num
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(3)
links = [posts.text for posts in driver.find_elements_by_xpath("//div[@itemprop='itemListElement']//h3[@itemprop='name']/a")]
num = len(links)