【问题标题】:Extract specific portions in html file using python使用python提取html文件中的特定部分
【发布时间】:2020-05-17 04:03:25
【问题描述】:

如何提取 html 文件示例的特定部分 https://patents.google.com/patent/EP1208209A1/en?oq=medicinal+chemistry

到目前为止,我使用 beautifulsoup 来获取不带所有标签的 html 文本版本。但我希望我的代码只读取上述文件的声明部分。

【问题讨论】:

  • 向我们展示您已有的代码并告诉我们您在查找该部分时遇到了什么问题!

标签: python html parsing beautifulsoup extraction


【解决方案1】:

这里有朋友,我发现在这个站点中,声明部分是一个带有自己 ID 的 html,这让事情变得更容易。我刚刚收集了部分并给出了字符串,以便您可以使用它。

import requests
from bs4 import BeautifulSoup
page = requests.get("https://patents.google.com/patent/EP1208209A1/en?oq=medicinal+chemistry")
soup = BeautifulSoup(page.content, 'html.parser')
claim_sect = soup.find_all('section', attrs={"itemprop":"claims"})
print('This is the raw content: \n') 
print(str(claim_sect)) 
print('This is the variable type: \n') 
print(str(type(claim_sect))) 
str_sect  =  claim_sect[0]

【讨论】:

  • ` ---> 22 str_sect = claim_section[0] IndexError: list index out of range` 这个代码错误是什么意思?我得到了这几个专利
  • 我每年都有一个专利文件夹。该代码适用于除两个之外的所有文件夹。即使快速浏览各个专利显示有一个权利要求部分,代码返回的索引超出了 str_sect=claim_sect[0] 的范围。这个 claim_sect[0] 到底是什么意思?
  • 要理解这一行,你必须理解上面的一行。这个:claim_sect = soup.find_all('section', attrs={"itemprop":"claims"}) 这是在做什么?我有一个名为 soup 的对象,其中包含整个 HTML 代码,然后我创建了一个名为 claim_sect 的新变量,它将接收与我传递的条件匹配的每个元素(它在 html
    内并且有一个名为'声明'。)问题是这可以返回多个值,所以它返回一个值列表。在最后一行我想要这个列表中的第一个元素,这就是我使用 claim_sect[0]
    的原因
  • 感谢您的解释,这有助于我理解这条线。有没有一种方法可以找出它生成的列表是什么,以便我可以调试为什么这些专利不返回权利要求部分?
  • 当然有,试试这段代码并告诉我控制台输出(同样在使用 python 几周后,我强烈建议你转向类似 Visual Studio 代码+python 扩展的东西,并研究 python 调试代码,你的生活会改变相信我:))
【解决方案2】:

据我所知,有两个 div 的 class="flex flex-width style-scope 专利结果"。

soup = BeautifulSoup(sdata)
mydivs = soup.findAll("div", {"class": "flex flex-width style-scope patent-result"})
div_with_claims = mydivs [1]

【讨论】:

    【解决方案3】:
    filename= 'C:/Users/xyz/.ipynb_checkpoints/EP1208209A1.html'
    html_file =open(filename, 'r', encoding='utf-8')
    source_code = html_file.read() 
    #print(source_code)
    soup = BeautifulSoup(source_code)
    print(soup.get_text())
    #mydivs = soup.findAll("div", {"class": "flex flex-width style-scope patent-result"})
    #div_with_claims = mydivs [1]
    #print(div_with_claims)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-10
      • 1970-01-01
      • 2022-10-17
      相关资源
      最近更新 更多