학술제를 준비하며, Linguistics 관련 논문 Abstract 데이터가 필요했다. 좋은 사이트를 찾기 위해서 정말 많이 찾아보았지만, 아래의 사이트가 그나마 괜찮았다.
lingbuzz - archive of linguistics articles
Base url : https://ling.auf.net/
카테고리 및 페이지 url : https://ling.auf.net/lingbuzz/_listing?community=카테고리&start=시작번호
base_url = base + "lingbuzz/_listing?community=" + cate + "&start=" + str(start)
res = requests.get(base_url)
html = bs(res.text, 'html.parser')
논문 detail 페이지 : https://ling.auf.net/lingbuzz/논문id
base = '<https://ling.auf.net/>'
detail_page = requests.get(base + detail_url)
논문을 담고있는 테이블은 html 중 2번째 테이블, table > tbody > tr 의 td 첫번째 자식
tables = html.select('table')
temp_table = tables[2]
paper_table = temp_table.select_one('table')
td 안에 또 table이 존재하고, 그 안의 tr들이 각 논문을 담고 있다.
rows = paper_table.select('tr')
tr 안에 td 중 마지막 요소가 논문 detail 페이지의 href를 가지고 있다.
for row in rows:
detail_url = row.select('td')[-1].select_one("a")['href']
detail_page = requests.get(base + detail_url)
detail_page_html = bs(detail_page.text, 'html.parser')
논문 제목 : center > font > a 태그
title = detail_page_html.select_one("center").font.extract().text
논문 저자 : center > a 태그
author_list = detail_page_html.select("center a")
# author 추출
author = ''
for person in author_list:
author += person.text + ', '
author = author.strip(', ')
논문 내용 : body태그 내에 아무 태그 없이 존재 → 나머지 태그를 제거해야됨
# abstract 만을 남겨놓기 위한 태그 삭제
detail_page_html.center.decompose()
detail_page_html.title.decompose()
detail_page_html.table.decompose()
detail_page_html.table.decompose()
detail_page_html.p.decompose()
abstract = detail_page_html.text