代码之家  ›  专栏  ›  技术社区  ›  Thomas

关于selenium/beautifulsoup html解析的问题

  •  0
  • Thomas  · 技术社区  · 7 年前

    HTML

    <span class="itemName tiny">foo</span>
        <span class="fr">
            <span id="2kCf5PSJ0vuykePDtnKrGOKvepUq1suWY5xrArwfAEVl2RmP8xyaq388rH4_slash_63OS||CAD||PPR||CA" class="itemValue privacy valueTiny">bar</span>
            <span class="currencyType ">CAD</span>
        </span>
    

    我的代码

    html = driver.page_source
    soup = BeautifulSoup(html, "html.parser")
    balance = soup.find(text="foo").findNext('span id')
    print(balance) <--- expecting "bar"
    schequing = balance.text
    

    但天平总是空的,我得到了这个错误。

    File "C:/Users/thomas/PycharmProjects/test/mainapp/main.py", line 223, in bills
    schequing = balance.text
    AttributeError: 'NoneType' object has no attribute 'text'
    

    有人知道如何用漂亮的汤解析html吗?我在这里的目的是用值foo查找,这是唯一的,然后得到下一个标记值,应该是bar。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Corey Goldberg    7 年前

    所需的元素是 动力元件 所以你必须使用 网络驱动器 对于 要可见的元素 然后按如下方式解析HTML:

    driver=webdriver.Chrome(executable_path=r'C:\path\to\chromedriver.exe')
    driver.get("your_url")
    WebDriverWait(driver, 10).until(EC.visibility_of_any_elements_located((By.XPATH, "//span[@class='itemValue privacy valueTiny'][text()='bar']")))
    html = driver.page_source
    soup = BeautifulSoup(html, "html.parser")
    balance = soup.find(text="foo").findNext('span id')
    print(balance)