from selenium import webdriver
from selenium.webdriver import ActionChains
from time import sleep
def getContent(marker,tagName):
txt=marker.find_element_by_class_name(tagName).get_attribute('textContent').strip()
return txt
if __name__=='__main__':
url=r'https://book.douban.com/'
driver=webdriver.Edge()
driver.maximize_window()
driver.get(url)
books=[]
uls=driver.find_elements_by_xpath('//*[@id="content"]')
for ulItem in uls:
ulItemClass=ulItem.get_attribute('class')
if ulItemClass=='list-col list-col5 list-express slide-item':
lis=ulItem.find_elements_by_xpath('li')
for liItem in lis:
divs=liItem.find_element_by_class_name('more-meta')
bookName=getContent(divs,'title')
author=getContent(divs,'author')
publishYear=getContent(divs,'year')
publisher=getContent(divs,'publisher')
book.append([bookName,author,publishYear,publisher])
driver.quit()
for book in books:
print(book)
![](https://profile-avatar.csdnimg.cn/689fdff7ed9d4cc18c638171392783bf_2301_79738703.jpg!4)
通过Selenium实现获取豆瓣图书信息时,报错webdriverVaue.value list is missing or empty
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注
【以下回答由 GPT 生成】
根据您提供的代码和问题描述,可以看出这个错误是由于缺少或空的
webdriverVaue
导致的。根据错误信息看不出明显的问题,但是可以尝试以下几个步骤来解决该问题:- 确定WebDriver驱动程序是否正确设置。
- 配置Edge浏览器驱动,并将其添加到系统的环境变量中。可以根据需要从
https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
下载所需的驱动程序版本。 - 确保WebDriver驱动程序与浏览器版本兼容。Selenium和浏览器驱动程序之间的兼容性可能会引起问题。
-
检查您的代码中使用的WebDriver是否与安装的浏览器版本相匹配。如果您的WebDriver驱动程序版本与浏览器版本不兼容,可能会导致运行时错误。
-
确保您的代码中的XPath表达式和类名选择器正确。
- 确保XPath表达式和类名选择器与要定位的元素匹配。可以通过在浏览器中手动检查元素的属性和层次结构来验证它们是否正确。
-
尝试使用其他定位元素的方式,例如使用
find_element_by_css_selector
或find_element_by_id
,看看是否能够解决问题。 -
确保网页加载完成后才执行具体的查找操作。
- 在使用
driver.get(url)
加载网页后,等待页面完全加载完成再执行后续的查找操作。可以使用WebDriverWait
和expected_conditions
来等待特定的元素加载完成。
下面是根据您提供的代码,进行了一些优化和添加了WebDriver驱动程序设置和等待的示例代码:
from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By from time import sleep def getContent(marker, tagName): txt = marker.find_element_by_class_name(tagName).get_attribute('textContent').strip() return txt if __name__ == '__main__': url = r'https://book.douban.com/' # 设置WebDriver驱动程序 driver = webdriver.Edge(executable_path='path_to_your_edge_driver') driver.maximize_window() driver.get(url) # 等待页面加载完成 wait = WebDriverWait(driver, 10) content_element = wait.until(EC.presence_of_element_located((By.ID, 'content'))) books = [] uls = driver.find_elements_by_xpath('//*[@id="content"]') for ulItem in uls: ulItemClass = ulItem.get_attribute('class') if ulItemClass == 'list-col list-col5 list-express slide-item': lis = ulItem.find_elements_by_xpath('li') for liItem in lis: divs = liItem.find_element_by_class_name('more-meta') bookName = getContent(divs, 'title') author = getContent(divs, 'author') publishYear = getContent(divs, 'year') publisher = getContent(divs, 'publisher') books.append([bookName, author, publishYear, publisher]) driver.quit() for book in books: print(book)
请注意,以上代码中的
'path_to_your_edge_driver'
应替换为您系统上Edge驱动程序的实际路径。如果尝试了以上步骤后仍然遇到相同的错误,可能需要进一步检查WebDriver和代码的配置和调试。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 无法输出helloworld
- ¥15 高通uboot 打印ubi init err 22
- ¥20 PDF元数据中的XMP媒体管理属性
- ¥15 R语言中lasso回归报错
- ¥15 网站突然不能访问了,上午还好好的
- ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
- ¥15 semrush,SEO,内嵌网站,api
- ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
- ¥15 振荡电路,ADS仿真
- ¥15 关于#c语言#的问题,请各位专家解答!