繁体   English   中英

BeautifulSoup 试图从列表中删除 HTML 数据

[英]BeautifulSoup trying to remove HTML data from list

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

        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)

示例 output 是:

<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>

谢谢!

要获取标签之间的文本,只需使用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)

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

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)

它递归地删除<>之间的文本,包括在内。

让我知道这个是否奏效!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM