如何使用BeautifulSoup从父级和子级标签获取文本以放入DOCX表

布巴琼斯

我正在尝试使用BeautifulSoup解析来自google.com/patents的声明,并将其放入DOCX表中。

我已经设法检索了声明,但是不幸的是,父div标签具有声明的第一部分,而子div-s是声明的其余部分的一部分,如下图所示。

HTML代码

当我运行程序时,表中的第一个单元格具有父级和所有子级div文本,并且div子级传播以下表单元格。

我想用父div的文本传播DOCX表中的第一个单元格,同时不包括子div传播,接下来的单元格用子div-s文本传播。

我尝试.decompose要求获得父母,我试图弄清楚如何重命名要放入表中的孩子。

   from bs4 import BeautifulSoup
   import requests
   from docx import Document
   from docx.enum.table import WD_TABLE_DIRECTION

   document = Document()

   url = 'https://patents.google.com/patent/US7054130?oq=US7654309'

   response = requests.get(url)
   data = response.text
   soup = BeautifulSoup(data, 'html.parser')

   claims = soup.select('div .claim-text')

   table = document.add_table(rows=1, cols=2, style='Table Grid')

   for claim in claims:

        if not claim.find('claim-ref'):

            try:
                print(claim.text + '\n')
                cells = table.add_row().cells
                cells[0].text = claim.text

                # Add space between paragraphs
                document.add_paragraph('')

            except:

                continue

    document.save('my_test.docx')

我希望能够将在父级中找到的声明开头的文本与声明一起解析到DOCX表的单元格1中,并从该单元格中排除子级。孩子们应该分别进入自己的牢房。

这是我尝试运行程序时得到的: 这是我尝试运行程序时得到的

这是我想要实现的: 这就是我要的

我还无法弄清楚如何将文本与父母和孩子分开。

马丁·埃文斯

为了避免重复,只需从顶部div获得整个文本并适当地分割它,例如:

from bs4 import BeautifulSoup
import requests
from docx import Document

document = Document()
url = 'https://patents.google.com/patent/US7054130?oq=US7654309'
response = requests.get(url)
data = response.text
soup = BeautifulSoup(data, 'html.parser')
claims_section = soup.find('section', itemprop='claims').div.div
table = document.add_table(rows=0, cols=2, style='Table Grid')

for div in claims_section.find_all('div', class_='claim', recursive=False):
    div_claim_text = div.find_next('div', class_='claim-text')
    lines = [line.strip() for line in div_claim_text.text.splitlines() if line.strip()]

    for line in lines:
        cells = table.add_row().cells
        cells[0].text = line

document.save('my_test.docx')

此方法仅存储独立声明。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法使用Scrapy从父级和子级节点/标签获取文本

使用父级和子级从表中获取值

如何从父级获取数据到子级?

从父级JPA中获取所有子级和子级

使用JPA批注自动从父级删除子级和从子级删除父级

有没有办法从父级获取子级并检查(和使用)方法和属性?

SQL如何获取父级及其所有子级和子级的子级...等

如何使用 MS SQL CTE 在同一个表中将记录从父级复制到子级

如何在select事件中获取剑道菜单的父级和子级文本

使用调试器如何从父级获取子进程的PID

如何使用Scala获取XML文件的所有子级和子级

在单个Elasticsearch查询中从父级和子级获取多个字段数据

从父级获取子节点(xml,java)

如何从父标签上的子标签 onChange 获取文本?

如何从父级到子级获取更新的数据作为道具

如何循环获取父级和子级类别

Vue JS从父级执行子级函数并获取数据

React Native从父级与子级的API获取数据

MySQL Recursive从父级获取所有子级

从父级对应项获取子级元素的数据

PHP / SQL不会从父级获取所有子级

如何获得BeautifulSoup标签的所有直接子级?

努力从父级和子级目录归档日志文件

React 16:使用钩子和功能组件时从父级调用子级函数

角度(4):将ngForm和ngModelGroup从父级转移到子级并使用表单验证

如何使用.NET Core中的默认依赖项注入从父级创建子级作用域?

如何使用React钩子将数据从父级传递给子级

如何使用Javascript从父级的所有子级中删除活动类

如何使用CSS flex从父级DIV到子级DIV获得100%的高度