diff options
author | Bryan Newbold <bnewbold@archive.org> | 2020-04-03 15:16:17 -0700 |
---|---|---|
committer | Bryan Newbold <bnewbold@archive.org> | 2020-04-03 15:16:17 -0700 |
commit | fb767adb9472ff85b46b5a383f3986950b12dd27 (patch) | |
tree | 724af4412353c627b0eae26fd4d7fd1164bf2b55 /scrape/parse_cnki_tables.py | |
parent | 4cbbdf33ee2a9651f79f96e4bf290d8bc721f69d (diff) | |
download | fatcat-covid19-fb767adb9472ff85b46b5a383f3986950b12dd27.tar.gz fatcat-covid19-fb767adb9472ff85b46b5a383f3986950b12dd27.zip |
move more directories around
Diffstat (limited to 'scrape/parse_cnki_tables.py')
-rwxr-xr-x | scrape/parse_cnki_tables.py | 52 |
1 files changed, 0 insertions, 52 deletions
diff --git a/scrape/parse_cnki_tables.py b/scrape/parse_cnki_tables.py deleted file mode 100755 index 3763550..0000000 --- a/scrape/parse_cnki_tables.py +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env python3 - -import sys -import json -from bs4 import BeautifulSoup - -def parse_cnki_tables(cnki_html): - soup = BeautifulSoup(cnki_html, "lxml") - - papers = [] - for table in soup.find_all('table'): - for row in table.tbody.find_all('tr'): - paper = dict() - for col in ('seq', 'author', 'date'): - paper[col] = row.find('td', **{'class': col}).get_text().strip().replace('\n', ' ') - name_td = row.find('td', **{'class': 'name'}) - operat_td = row.find('td', **{'class': 'operat'}) - paper['title'] = name_td.a.get_text().strip().replace('\n', ' ') - paper['seq'] = int(paper['seq']) - paper['authors'] = [a for a in paper.pop('author').split(';') if a] - mark = row.find('span', **{'class': 'markOricon'}) - - paper['info_url'] = "http://en.gzbd.cnki.net" + name_td.a['href'] - paper['pdf_url'] = "http://en.gzbd.cnki.net" + operat_td.find('a', **{'class': 'icon-download'})['href'] - try: - paper['html_url'] = "http://en.gzbd.cnki.net" + operat_td.find('a', **{'class': 'icon-html'})['href'] - except TypeError: - try: - paper['read_url'] = "http://en.gzbd.cnki.net" + operat_td.find('a', **{'class': 'icon-read'})['href'] - except TypeError: - #print(operat_td, file=sys.stderr) - pass - - if 'FileName=' in paper['info_url']: - params = paper['info_url'].split('?')[1].split('&') - for p in params: - if p.startswith("FileName="): - paper['cnki_id'] = p.replace("FileName=", "") - break - - if mark and mark.get_text() == 'CN': - paper['is_cn'] = True - else: - paper['is_cn'] = False - papers.append(paper) - return papers - -if __name__ == "__main__": - with open("cnki_tables.html", "r") as f: - res = parse_cnki_tables(f.read()) - for paper in res: - print(json.dumps(paper, sort_keys=True)) |