【问题标题】:BeautifulSoup trying to remove HTML data from listBeautifulSoup 试图从列表中删除 HTML 数据
【发布时间】:2021-02-05 17:32:34
【问题描述】:

如上所述,我试图从打印输出中删除 HTML 以获取文本和我的分割 |和 -。我得到了跨度信息以及我想删除的其他信息。由于它是循环程序的一部分,因此我无法在页面更改时搜索页面的各个文本信息。页面架构保持不变,这就是打印列表中的项目保持不变的原因。想知道清理输出的最简单方法是什么。这是代码部分:

        infoLink = driver.find_element_by_xpath("//a[contains(@href, '?tmpl=component&detail=true&parcel=')]").click()
        driver.switch_to.window(driver.window_handles[1])
        aInfo = driver.current_url
        data = requests.get(aInfo)
        src = data.text
        soup = BeautifulSoup(src, "html.parser")
        parsed = soup.find_all("td")
        for item in parsed:
            Original = (parsed[21])
            Owner = parsed[13]
            Address = parsed[17]
            print (*Original, "|",*Owner, "-",*Address)

示例输出为:

<span class="detail-text">123 Main St</span> | <span class="detail-text">Banner,Bruce</span> - <span class="detail-text">1313 Mockingbird Lane<br>Santa Monica, CA  90405</br></span>

谢谢!

【问题讨论】:

    标签: python html beautifulsoup


    【解决方案1】:

    要获取标签之间的文本,只需使用get_text(),但您应该注意,标签之间总是有文本以避免错误:

    for item in parsed:
        Original = (parsed[21].get_text(strip=True))
        Owner = parsed[13].get_text(strip=True)
        Address = parsed[17].get_text(strip=True)
    

    【讨论】:

      【解决方案2】:

      我最近写了一个算法来做这样的事情。但是,如果您的目标文本中包含 ,它将不起作用。

      def remove_html_tags(string):
          data = string.replace(string[string.find("<"):string.find(">") + 1], '').strip()
          if ">" in data or "<" in data:
              return remove_html_tags(data)
          else:
              return str(data)
      

      它递归地删除&lt;&gt; 之间的文本。

      让我知道这是否有效!

      【讨论】:

        猜你喜欢
        • 2011-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-29
        • 2011-01-23
        • 1970-01-01
        相关资源
        最近更新 更多