我試過在互聯網上搜索這個特定謎題的答案;但是,我沒有太多運氣深入了解這種特定情況。
因此,我目前正在嘗試抓取 last.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方法來獲取內容,并且只剩下一個人類幾乎無法理解的串列。
<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()
然后只訪問第一頁。有人可以幫我解決這個黑魔法嗎?
uj5u.com熱心網友回復:
認識到這super_list是一個二維串列。要呼叫.text,您需要使用 2D 索引。嘗試在最后列印一些東西
print(super_list[-1][-1].text)
現在.text應該可以正常作業了。
uj5u.com熱心網友回復:
好吧,我已經正式放棄了 Selenium。我要回去了requests-html。很抱歉讓任何來這里尋找解決方案的人失望。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/311618.html
上一篇:如果selenium中的元素回傳空文本,我想通過我的測驗
下一篇:無法移動到硒中的下一頁
