Python3 - BeautifulSoup - 获取两个标签之间的值,其中值介于

标签 python python-3.x beautifulsoup

我有以下由 pdftotext 生成的 HTML block 使用 -bbox-layout选项:

<flow>
<block xMin="21.600000" yMin="86.356000" xMax="178.647000" yMax="116.233001">
    <line xMin="21.600000" yMin="86.356000" xMax="178.647000" yMax="101.833000">
        <word xMin="21.600000" yMin="86.356000" xMax="178.647000" yMax="101.833000">
            My text string located here!</word>
    </line>

</block>
</flow>

[...]
<flow>
<block xMin="223.560000" yMin="323.675000" xMax="345.563500" yMax="339.855500">
    <line xMin="223.560000" yMin="323.675000" xMax="345.563500" yMax="339.855500">
        <word xMin="223.560000" yMin="323.675000" xMax="316.836500" yMax="339.855500">Another string
        </word>
        <word xMin="320.022000" yMin="323.675000" xMax="345.563500" yMax="339.855500">And another!</word>
    </line>
</block>
</flow>

现在,我正在尝试动态解析上述结构,并获取每个 <block>[...]</block>内容,其中值 xMinxMax介于两个数字之间。

假设我有以下数字:

areas[0] = (100, 0, 200, 792)
areas[1] = (200, 0, 612, 792)

with open(path_to_html_document) as html_file:
    parsed_html = BeautifulSoup(html_file)
    for (i, area) in enumerate(areas):

        xMinValue, xMaxValue = areas[i][0], areas[i][2]

        block_tags = parsed_html.find_all(
            "block", attrs={"xMin": xMinValue, "xMax": xMaxValue})

        print(block_tags)

上面的代码没有返回任何东西,因为没有匹配的标签。 find_all()搜索 block 的完全匹配项带有特定数字的标签 - 但我正在尝试搜索 block标签,其中 xMin 和 xMax 是:

areas[0] is between 100 and 200

areas[1] is between 200 and 612

BeautifulSoup 可以吗?

最佳答案

替换你的代码:

block_tags = parsed_html.find_all(
            "block", attrs={"xMin": xMinValue, "xMax": xMaxValue})
print(block_tags)

收件人:

block_tags = parsed_html.find_all("block")

for block in block_tags:
    if float(block['xmin']) >= xMinValue and  float(block['xmax']) <= xMinValue:
        print(block)

如果调试 html 代码 print(parsed_html),您将看到 html block all attribute in small letter.

关于Python3 - BeautifulSoup - 获取两个标签之间的值,其中值介于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56736629/

相关文章:

python mysql不正确的字符串值警告

python - 如何阻止随机项目逐字打印

python - 我可以使用 pop() 函数来传递用户输入吗?

Linux 中的 Python Pickle 文件与 Mac 不兼容?

python - 如何通过 Python 抓取动态网页

python - 解析 Youtube 播放列表的 HTML

python - SQLite 中字符串文字和标识符的区别

python - Keras,优化时保存状态的最佳方式

python - 在抽象类方法的具体实现中检查**kwargs。接口(interface)问题?

python - Python 中的 BeautifulSoup - 获取类型的第 n 个标签