前提・実現したいこと
プログラミング初心者です。
google scholorから、論文の基本情報を50件分取得し、csvファイルに出力するプログラムを組んでいるのですが、プログラムが動作しません。
サイトは下記を参考にしました。
https://qiita.com/kuto/items/9730037c282da45c1d2b
https://arakan-pgm-ai.hatenablog.com/entry/2018/01/17/080000
エラーメッセージは特に出力されず、項目のみが記載された、中身の要素が空のcsvが生成されてしまいます。
もう4日ほど取り組んでいるのですが解決できず、途方に暮れています。
何卒、よろしくお願い致します。
該当のソースコード
python
1from bs4 import BeautifulSoup 2import requests 3import pandas as pd 4import re 5 6def get_search_results_df(): 7 columns = ["rank", "title", "writer", "year", "citations", "url"] 8 df = pd.DataFrame(columns=columns) #表の作成 9 list_keywd = ['脳', '神経'] 10 html_doc = requests.get('https://scholar.google.co.jp/scholar?num=50&q=' + ' '.join(list_keywd)).text 11 soup = BeautifulSoup(html_doc, "html.parser") # BeautifulSoupの初期化 12 tags1 = soup.find_all("h3", {"class": "gs_rt"}) # title&url 13 tags2 = soup.find_all("div", {"class": "gs_a"}) # writer&year 14 tags3 = soup.find_all(text=re.compile("引用元")) # citation 15 16 rank = 1 17 for tag1, tag2, tag3 in zip(tags1, tags2, tags3): 18 title = tag1.text.replace("[HTML]","") 19 url = tag1.select("a")[0].get("href") 20 writer = tag2.text 21 writer = re.sub(r'\d', '', writer) 22 year = tag2.text 23 year = re.sub(r'\D', '', year) 24 citations = tag3.replace("引用元","") 25 se = pd.Series([rank, title, writer, year, citations, url], columns) 26 df = df.append(se, columns) 27 rank += 1 28 return df 29 30search_results_df = get_search_results_df() 31filename = "Google_Scholar.csv" 32search_results_df.to_csv('/Users/xxxx/OneDrive/filename', encoding="utf-8") 33
試したこと
変数soupや、変数tgas1を出力したところ、適切な値は入っていなかったので、
恐らくhtml_docにgoogle scholorのパスを代入するところから、既にコードが機能していないのだと思います。
回答1件
あなたの回答
tips
プレビュー