我試圖從一個汽車博客中搜刮資訊,但我無法回圈查看包含資訊的段落標簽的div標簽。
driver.get("https://www.autocar.co.uk/car-news")
driver.maximize_window()
for i in range(3)。
i =1: i =1?
info = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, f'//*[@id="page"]/div[2]/div[1]/div[2]/div/div[1]/div/div[1]/div[1]/div[{i})/div'/span>)
heading = info.find_element_by_tag_name('h2')
clickable = heading.find_element_by_tag_name('a')
driver.execute_script("arguments[0].click();"/span>, clickable)
#代碼在這里開始失效。
try:
body_info = WebDriverWait(driver, 10).until(
EC.existence_of_element_located((By.CLASS_NAME, 'field-item even'))
main_text = []
for j in range(3)。
j =1: ``````!
text = body_info.find_element_by_tag_name('p')
main_text.append(text)
for t in main_text:
t_info = t.text
print(f'{heading.text})
{t_info}')
except:
print(" couldn't find tag")
driver.back()
uj5u.com熱心網友回復:
你的代碼有一個問題,(By.CLASS_NAME, 'field-item even')。
Selenium不支持多類或帶空格的類。
簡單地用.替換空格,這將是CSS_SELECTOR
試試這樣的方法:
try:
body_info = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, ' .field-item.even'))
uj5u.com熱心網友回復:
要選擇多個類,你必須使用類選擇器
CodePudding必須是'.field-item even'而不是'field-item even'如果你使用By.CSS_SELECTOR進行presence_of_element_located()。
所以替換,
body_info = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CLASS_NAME, 'field-item even') )
與此同時,
body_info = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CLASS_NAME, 'field-item even') )
官方的檔案。https://selenium-python.readthedocs.io/api.html#locate-elements-by
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/318349.html
標籤:
上一篇:加入2個檔案,以第一個檔案為優先
