Python: List推导式破坏Selenium While循环



我试着在网上搜索这个问题的答案;然而,我没有太多的运气来深入了解这个特定的情况。

所以,我目前正试图刮掉最后四页左右。"爵士金属"的fm条目;(见URL)

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
options = Options()
options.headless = True
driver = webdriver.Firefox(options = options)
driver.get('https://www.last.fm/tag/jazz+metal/artists?page=20')
super_list = []
wait = WebDriverWait(driver, 10)
while True:
try:
entries = wait.until(
EC.presence_of_element_located((By.CLASS_NAME, 'grid-items-section'))
)

grid = driver.find_element(By.CLASS_NAME, 'grid-items-section')
grid_children = grid.find_elements(By.TAG_NAME, 'li')

super_list.append(grid_children)

pagination = wait.until(
EC.presence_of_element_located((By.CLASS_NAME, 'pagination-next'))
)
pagination.click()

except:
break

问题是,super_list.append(grid_children)不是很有帮助,因为一旦while循环结束,我在该范围之外使用super_list,我就不能再调用.text方法来获取内容,只剩下一个几乎无法破译的列表。

& lt; selenium.webdriver.firefox.webelement。FirefoxWebElement (session="11b49c8e-eec7-45f2->9e2a-e2034b93077a", element="ffe29b8e-5b65-4df3-985e-68e501e3a546")>

但是,如果我将super_list.append(grid_children)更改为super_list.append([entry.text for entry in grid_children]),整个cookie就会崩溃。到底发生了什么事?此外,如果我完全删除super_list.append(grid_children),那么它会访问每个页面(是的,就目前而言,它甚至不会访问最后一页)!

情节变厚了,好像我加入了

finally:
driver.quit()

则只访问第一页。谁能帮我解开这个黑魔法?

唉,我已经正式放弃使用Selenium了。我要回到requests-html。很抱歉让所有来这里寻求解决方案的人失望了。

最新更新