三心九尾狐 2023-11-07 20:55 采纳率: 71.4%
浏览 16
已结题

通过Selenium实现获取豆瓣图书信息时,报错webdriverVaue.value list is missing or empty


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)
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-08 10:07
    关注

    【以下回答由 GPT 生成】

    根据您提供的代码和问题描述,可以看出这个错误是由于缺少或空的webdriverVaue导致的。根据错误信息看不出明显的问题,但是可以尝试以下几个步骤来解决该问题:

    1. 确定WebDriver驱动程序是否正确设置。
    2. 配置Edge浏览器驱动,并将其添加到系统的环境变量中。可以根据需要从https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/下载所需的驱动程序版本。
    3. 确保WebDriver驱动程序与浏览器版本兼容。Selenium和浏览器驱动程序之间的兼容性可能会引起问题。
    4. 检查您的代码中使用的WebDriver是否与安装的浏览器版本相匹配。如果您的WebDriver驱动程序版本与浏览器版本不兼容,可能会导致运行时错误。

    5. 确保您的代码中的XPath表达式和类名选择器正确。

    6. 确保XPath表达式和类名选择器与要定位的元素匹配。可以通过在浏览器中手动检查元素的属性和层次结构来验证它们是否正确。
    7. 尝试使用其他定位元素的方式,例如使用find_element_by_css_selectorfind_element_by_id,看看是否能够解决问题。

    8. 确保网页加载完成后才执行具体的查找操作。

    9. 在使用driver.get(url)加载网页后,等待页面完全加载完成再执行后续的查找操作。可以使用WebDriverWaitexpected_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和代码的配置和调试。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月16日
  • 已采纳回答 11月8日
  • 创建了问题 11月7日

悬赏问题

  • ¥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语言#的问题,请各位专家解答!