top of page

google patentsのテキストデータを取得するクラス

更新日:3月29日

1.はじめに

・時々google patetnsのデータから文章を抽出する必要が出てくるので、pythonクラスを作成しました。


2.コードと使い方




import requests
from bs4 import BeautifulSoup
import bs4
import re

class pat_text:
    """
    google patetnsの特許文章のテキストを抽出します。

    Args:
        url (str): 抽出するWebページのURL。

    Attributes:
        url (str): 抽出したい文献のgoogle patentsでのURL。
        soup (bs4.BeautifulSoup): 抽出したWebページのBeautifulSoupオブジェクト。
        title (str): 抽出したWebページのタイトル。
        abstract (str): 抽出したWebページの要約。
        claims_list (list): 抽出したWebページの請求項のリスト。
        desc_list (list): 抽出したWebページの説明のリスト。

    Methods:
        get_soup : beautifulsoupでsoupオブジェクトの作成
        get_title: タイトルの抽出.
        get_abstract : 要約文の抽出
        get_claims : 請求項の抽出
        get_description : 詳細な説明の抽出

    """

    def __init__(self, url: str) -> None:
        self.url = url

    def get_soup(self) -> bs4.BeautifulSoup:
        """
        WebページからHTMLを取得し、BeautifulSoupオブジェクトを返します。

        Returns:
            bs4.BeautifulSoup: 抽出したWebページのBeautifulSoupオブジェクト。
        """
        res = requests.get(self.url)
        soup = BeautifulSoup(res.content, 'html.parser')
        self.soup = soup
        return soup

    def get_title(self) -> str:
        """
        タイトルを取得し、返します。

        Returns:
            str: 抽出したタイトル。
        """
        title = self.soup.find("meta", attrs={'name': 'DC.title'})["content"]
        return title

    def get_abstract(self) -> str:
        """
        要約文を取得し、返します。

        Returns:
            str: 抽出した要約文。
        """
        abstract = self.soup.find("div", {"class": "abstract"}).get_text()
        return abstract

    def get_claims(self) -> list:
        """
        請求項のリストを取得し、返します。

        Returns:
            list: 抽出した請求項のリスト。
        """
        claims_list = []
        claims = self.soup.find_all("div", attrs={'class': re.compile('claim-text.*')})
        for clm in claims:
            claims_list.append(clm.get_text())
        return claims_list

    def get_description(self) -> list:
        """
        詳細な説明のリストを取得し、返します。

        Returns:
            list: 詳細な説明のリスト。
        """
        desc_list = []
        descs = self.soup.find_all("div", attrs={'class': re.compile('description.*')})
        for desc in descs:
            desc_list.append(desc.get_text())
        return desc_list



使用例:

url="https://patents.google.com/patent/JP2000123456A/ja"
patt = pat_text(url)
patt.get_soup()
#patt.get_title()
patt.get_abstract()
#patt.get_claims()
#patt.get_description()

出力:

(57)【要約】 【課題】 構成が簡単で小型化、軽量化が可能で、使い易く、コストの安価なディスクドライブ装置を提供する。 【解決手段】 セット状態にあるディスクを排出するディスク排出機構20と、セットされたディスクに対してヘッドHmを離接するヘッド移動機構44と、排出モード位置と再生モード位置と記録モード位置の間で変位可能なモード切換部材51を備え、そのモード切換部材51を手動で再生モード位置から記録モード位置へ変位させると、前記ヘッド移動機構44によりヘッドHmをディスクに接触させ、前記モード切換部材51を手動で記録モード位置から再生モード位置へ変位させると、前記ヘッド移動機構44によりヘッドHmをディスクから離し、前記モード切換部材51を手動で再生モード位置から排出モード位置へ変位させると、セット状態にあるディスクを前記ディスク排出機構20で排出するように構成されていることを特徴とする。



閲覧数:489回0件のコメント

最新記事

すべて表示

Comments


bottom of page