科学論文のためのウェブスクレーピング


導入


ACLは、自然言語処理(NLP)に関連する研究分野をカバーする計算言語学のための協会の年次会議です.
NLPを専門としているAI学生のM . SCとして、私は現在計算言語学の分野の最先端の研究のために見ています.

Webスクレーピングを用いた動機づけ


多数の最先端の科学論文は、今年のイベントで発表されました.ACL2020 日本計算言語学会.
私は単にACL 2020ウェブサイトで公開されたすべての論文のリストを彼らの抄録とともに持っていたかったです.CSVファイルでこれらの詳細を保存することによって、私は私の論文に関連していたフィルタと色コード書類にExcelを使うことができました.

解決策


ACL 2020のために公開された論文のタイトルと要約を削るために、私はPythonで短いスクリプトを書きました.
まず必要なライブラリをインポートしなければなりませんでした.
import requests
import pandas as pd
from bs4 import BeautifulSoup
次に、ACL 2020アンソロジーのWebページの応答を取得するリクエストライブラリを使用します.WebページのHTMLpage.content ) それから、BeautifulSmokeを使用して解析されました.
# Get Response object for webpage
page = requests.get(URL)
# Parse webpage HTML and save as BeautifulSoup object
soup = BeautifulSoup(page.content, 'html.parser')
最初は、特定のWebページ上のすべての論文のタイトルを抽出しました.私はfind_all() すべての段落タグを次のCSSクラスで探す方法d-sm-flex align-items-stretch , つまり、紙のタイトルを含むすべての段落.
title_paras = soup.find_all('p', class_='d-sm-flex align-items-stretch')

しかし、中のアイテムtitle_paras 変数自体はタイトルではありません.それは私が欲しいものです.したがって、私は各段落タグの各子タグを通過しなければならなかったalign-middle .
for para in title_paras:
    titles.append(para.find_all('span', class_='d-block')[1].find('a', class_='align-middle').text)

私は同様の方法を経て、各論文の抽象を抽出しました.題名と抄録は2つのリストに収められたtitles and abstracts (私が知っているショッカー).私はこれらの2つのリストを使用してパンダのデータを作成し、CSVに保存します.
df = pd.DataFrame({'Title': titles, 'Abstract': abstracts})
df.to_csv('ACL 2020 Papers.csv', index=False)
この短いプロジェクトのためのGithub Repo(コードと必要なライブラリを含む)を見つけることができますhere .

結論


このポストでは、我々はどのように科学的な論文のタイトルとアブソリュートスープを使用して、Acrl . FreeBootFreeスープを使用してデータを保存し、CSV形式でパンダを使用してデータを保存.

便利なリンク

  • Beautiful Soup Documentation
  • Requests Quickstart
  • pandas Library Homepage