我正在浏览此page上的所有链接,但页面计数器无法正常工作。知道为什么会这样吗?
我试图调整xpath以期解决问题。为什么要这样做?
driver = webdriver.Chrome()
def page_counter():
for x in range(1000):
yield x
count = page_counter()
driver.get('https://www.betfair.com.au/exchange/plus/football')
elements = [x.get_attribute("href") for x in
driver.find_elements_by_xpath("//nav//a[starts-with(@href, ('football'))]")]
shuffle(elements)
import operator
import collections
links = dict((next(count) + 1, e) for e in elements)
desc_links = collections.OrderedDict(sorted(links.items(), reverse=True))
for key, value in desc_links.items():
driver.get(value)
print('At Page: ' + str(key))
答案 0 :(得分:0)
elements
成为空列表,这就是你的循环不起作用的原因。
您需要让您的网页加载才能访问以href
开头football
的链接元素。其中一种可能的方法是使用WebDriverWait
等待标题元素可见:
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
driver = webdriver.Chrome()
driver.get('https://www.betfair.com.au/exchange/plus/football')
wait = WebDriverWait(driver, 10)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".container .page-content header")))
elements = [x.get_attribute("href") for x in driver.find_elements_by_xpath("//nav//a[starts-with(@href, ('football'))]")]