과학 논문을 위한 웹 스크래핑
5542 단어 python
소개
ACL은 자연어 처리(NLP)와 관련된 연구 분야를 다루는 전산 언어학 협회(Association for Computational Linguistics)의 연례 회의입니다.
저는 NLP를 전문으로 하는 AI 석사 학생으로서 현재 전산 언어학 분야의 최첨단 연구를 찾고 있습니다.
웹 스크래핑을 사용하게 된 동기
올해 행사ACL2020(Association for Computational Linguistics)에서 여러 최신 과학 논문이 발표되었습니다.
저는 단순히 ACL2020 웹사이트에 게시된 모든 논문 목록과 초록을 갖고 싶었습니다. 이러한 세부 정보를 csv 파일에 저장하면 Excel을 사용하여 논문과 관련된 논문을 필터링하고 색상 코드를 지정할 수 있습니다.
해결책
ACL2020에 게시된 논문의 제목과 초록을 긁어모으기 위해 Python으로 짧은 스크립트를 작성했습니다.
먼저 필요한 라이브러리를 가져와야 했습니다.
import requests
import pandas as pd
from bs4 import BeautifulSoup
그런 다음 요청 라이브러리를 사용하여 ACL2020 Anthology 웹 페이지에 대한 응답을 받았습니다. 그런 다음 BeautifulSoup을 사용하여 웹 페이지(page.content
)의 HTML을 구문 분석했습니다.
# Get Response object for webpage
page = requests.get(URL)
# Parse webpage HTML and save as BeautifulSoup object
soup = BeautifulSoup(page.content, 'html.parser')
처음에는 특정 웹 페이지에서 찾은 모든 논문의 제목을 추출했습니다. find_all()
메서드를 사용하여 다음 CSS 클래스d-sm-flex align-items-stretch
가 있는 모든 단락 태그, 즉 종이 제목이 포함된 모든 단락을 찾았습니다.
title_paras = soup.find_all('p', class_='d-sm-flex align-items-stretch')
그러나 title_paras
변수의 항목은 제목 자체가 아닙니다. 이것이 내가 원하는 것입니다. 따라서 CSS 클래스align-middle
가 있는 a 태그에 저장된 제목 텍스트에 도달할 때까지 각 단락 태그에 대한 각 하위 태그를 거쳐야 했습니다.
for para in title_paras:
titles.append(para.find_all('span', class_='d-block')[1].find('a', class_='align-middle').text)
각 논문의 초록을 추출하기 위해 비슷한 과정을 거쳤습니다. 제목과 초록은 titles
와 abstracts
라는 두 개의 목록에 저장되었습니다. 이 두 목록을 사용하여 pandas 데이터 프레임을 만들고 csv에 저장했습니다.
df = pd.DataFrame({'Title': titles, 'Abstract': abstracts})
df.to_csv('ACL 2020 Papers.csv', index=False)
이 짧은 프로젝트에 대한 GitHub 저장소(코드 및 필수 라이브러리 포함)는 찾을 수 있습니다here.
결론
이 게시물에서는 Python에서 BeautifulSoup을 사용하여 ACL2020에서 과학 논문 제목과 초록을 스크랩하고 pandas를 사용하여 csv 형식으로 데이터를 저장하는 방법을 살펴보았습니다.
유용한 링크
올해 행사ACL2020(Association for Computational Linguistics)에서 여러 최신 과학 논문이 발표되었습니다.
저는 단순히 ACL2020 웹사이트에 게시된 모든 논문 목록과 초록을 갖고 싶었습니다. 이러한 세부 정보를 csv 파일에 저장하면 Excel을 사용하여 논문과 관련된 논문을 필터링하고 색상 코드를 지정할 수 있습니다.
해결책
ACL2020에 게시된 논문의 제목과 초록을 긁어모으기 위해 Python으로 짧은 스크립트를 작성했습니다.
먼저 필요한 라이브러리를 가져와야 했습니다.
import requests
import pandas as pd
from bs4 import BeautifulSoup
그런 다음 요청 라이브러리를 사용하여 ACL2020 Anthology 웹 페이지에 대한 응답을 받았습니다. 그런 다음 BeautifulSoup을 사용하여 웹 페이지(page.content
)의 HTML을 구문 분석했습니다.
# Get Response object for webpage
page = requests.get(URL)
# Parse webpage HTML and save as BeautifulSoup object
soup = BeautifulSoup(page.content, 'html.parser')
처음에는 특정 웹 페이지에서 찾은 모든 논문의 제목을 추출했습니다. find_all()
메서드를 사용하여 다음 CSS 클래스d-sm-flex align-items-stretch
가 있는 모든 단락 태그, 즉 종이 제목이 포함된 모든 단락을 찾았습니다.
title_paras = soup.find_all('p', class_='d-sm-flex align-items-stretch')
그러나 title_paras
변수의 항목은 제목 자체가 아닙니다. 이것이 내가 원하는 것입니다. 따라서 CSS 클래스align-middle
가 있는 a 태그에 저장된 제목 텍스트에 도달할 때까지 각 단락 태그에 대한 각 하위 태그를 거쳐야 했습니다.
for para in title_paras:
titles.append(para.find_all('span', class_='d-block')[1].find('a', class_='align-middle').text)
각 논문의 초록을 추출하기 위해 비슷한 과정을 거쳤습니다. 제목과 초록은 titles
와 abstracts
라는 두 개의 목록에 저장되었습니다. 이 두 목록을 사용하여 pandas 데이터 프레임을 만들고 csv에 저장했습니다.
df = pd.DataFrame({'Title': titles, 'Abstract': abstracts})
df.to_csv('ACL 2020 Papers.csv', index=False)
이 짧은 프로젝트에 대한 GitHub 저장소(코드 및 필수 라이브러리 포함)는 찾을 수 있습니다here.
결론
이 게시물에서는 Python에서 BeautifulSoup을 사용하여 ACL2020에서 과학 논문 제목과 초록을 스크랩하고 pandas를 사용하여 csv 형식으로 데이터를 저장하는 방법을 살펴보았습니다.
유용한 링크
import requests
import pandas as pd
from bs4 import BeautifulSoup
# Get Response object for webpage
page = requests.get(URL)
# Parse webpage HTML and save as BeautifulSoup object
soup = BeautifulSoup(page.content, 'html.parser')
title_paras = soup.find_all('p', class_='d-sm-flex align-items-stretch')
for para in title_paras:
titles.append(para.find_all('span', class_='d-block')[1].find('a', class_='align-middle').text)
df = pd.DataFrame({'Title': titles, 'Abstract': abstracts})
df.to_csv('ACL 2020 Papers.csv', index=False)
이 게시물에서는 Python에서 BeautifulSoup을 사용하여 ACL2020에서 과학 논문 제목과 초록을 스크랩하고 pandas를 사용하여 csv 형식으로 데이터를 저장하는 방법을 살펴보았습니다.
유용한 링크
Reference
이 문제에 관하여(과학 논문을 위한 웹 스크래핑), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/julianagius/web-scraping-for-scientific-paper-details-6o5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)