レポートを制作するとき、地味にめんどくさいのは引用論文のダウンロードですよね。
今回はそのダウンロードをPythonで自動化できるのか方法を記事にしました。
スポンサーリンク
スクレイピングをする前に、注意してほしいことがあります!!
google scholarのスクレイピングは違法です!
する必要がなければしない方が良いです。実行に利用する環境のIPアドレスからGoogle検索が利用できなくなるリスクがあります。詳細についてはこちらを参照してください。
time.sleep(1.0)で時間を空けてスクレイピングをすること
一定時間なんどもスクレイピングをすると、googleがロボットによる攻撃ではないかと疑われてしまいます。そうなるとpdfをダウンロードすることができなくなりますのでご注意ください。
Pythonコード
#!/usr/bin/env python3
#必要なものを宣言
import re
import requests
from pathlib import Path
from bs4 import BeautifulSoup4
#Pythonファイル場所に新しいディレクトリを追加する
output_folder = Path('article')
output_folder.mkdir(exist_ok=True)
#調べたいURL
url = 'https://scholar.google.co.jp/scholar?....'
#URLをhtmlに変換する
html = requests.get(url).text
time.sleep(1.0)
#BeautifulSoupの初期化
soup = BeautifulSoup(html, "html.parser")
#DLするPDFを指定している「a」タグの場所
#ブラウザの検証ツールから調べます
a_list =soup.select('div.gs_or_ggsm > a')
#「a」タグの中で、PDFのURLを指定している場所を取り出す
for a in a_list:
pdf_url = a.attrs['href']
#保存するファイル名を決める
filename = re.search(".*\/(.*pdf)$",pdf_url)
#保存フォルダー(output_folder)と結合
save_path = output_folder.joinpath(filename.group(1))
try:
#pdfのURLからデータを取得
pdf = requests.get(pdf_url)
time.sleep(1.0)
#保存するファイルパスにデータを保存
open(save_path, 'wb').write(pdf.content)
print(save_path)
except ValueError:
#ものによっては、.pdfがつかないものがあるので
#そのURLをプリントする
print('ValueError =' pdf_url)
スポンサーリンク
参考にしたサイト様
スクレイピング全般
https://hashikake.com/scraping_img
google scholarによる方法
https://qiita.com/kuto/items/9730037c282da45c1d2b