質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

964閲覧

Python CSV出力 空白スペースの削除について

BLK

総合スコア15

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2019/02/09 13:30

編集2019/02/11 07:57

Pythonを使って、投信信託(投信)の概要リスト作成を試みております。

モーニングスター社のHPでは、投信の特色を調べることができ、下記の通りURLの末尾をモーニングスター社の投信コードを指定することで、調べたい投信のページに飛ぶことができます。

野村 ブラジル・インフラ関連株投信
http://www.morningstar.co.jp/FundData/SnapShot.do?fnc=2010020501

スクレイピングしたい箇所は、ページ中断のファンドの特色部分で、上記投信の例では以下の部分です。

主要投資対象は、ブラジルのインフラ関連企業の株式。株式への投資にあたっては、ファンダメンタルズ分析に基づき成長性や独自のコーポレートガバナンス評価等の観点から投資銘柄を選定し、信託財産の成長を図ることを目的として積極的な運用を行う。原則として、為替ヘッジは行わない。2月決算。

事前に調べたい投信のidを下記の通りテキストファイルで用意し、以下のスクリプトを用いてCSVファイルに結果を出力したところ、余分な空白スペースが出力されてしまいました。色々調べたのですが、空白スペースを削除する方法が分からず困っております。どなたか解決策をご教示いただけると幸いです。

id_list_MF.txt
2010020501
2008111207

python

1from bs4 import BeautifulSoup 2from urllib.request import urlopen 3import requests 4import pandas as pd 5from time import sleep 6 7id_list = open("id_list_MF.txt", "r") 8 9lines = id_list.readlines() 10 11des = [] 12 13for line in lines: 14 url = "http://www.morningstar.co.jp/FundData/SnapShot.do?fnc=" + line 15 r = requests.get(url) 16 soup = BeautifulSoup(r.content, "html.parser") 17 18 for i in soup.find("div", class_="inftxt"): 19 des.append(i.string.strip()) 20 21df = pd.DataFrame({"des":des}) 22 23print(df) 24 25df.to_csv("des_MF.csv", header=False, index=False,encoding='utf_8_sig')

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんばんは。
こちらには、まだ、回答が無い様ですので、自分なりにコードを作成してみました。
以下の通りです。※もう、解決済みでしたら、ご容赦下さい。

python

1from bs4 import BeautifulSoup 2from urllib.request import urlopen 3import requests 4import pandas as pd 5from time import sleep 6 7id_list = open("id_list_MF.txt", "r") 8 9lines = id_list.readlines() 10 11des = [] 12 13for line in lines: 14 url = "http://www.morningstar.co.jp/FundData/SnapShot.do?fnc=" + line 15 r = requests.get(url) 16 soup = BeautifulSoup(r.content, "html.parser") 17 18 topicsIndex = soup.find("div", class_="inftxt") 19 topics = topicsIndex.find("p") 20 21 for t in topics: 22 des.append(t) 23 24df = pd.DataFrame({"des":des}) 25 26print(df) 27 28df.to_csv("des_MF.csv", header=False, index=False,encoding='utf_8_sig') 29

csvの結果は下記の通りです。空白行は出ませんでした。

主要投資対象は、ブラジルのインフラ関連企業の株式。株式への投資にあたっては、ファンダメンタルズ分析に基づき成長性や独自のコーポレートガバナンス評価等の観点から投資銘柄を選定し、信託財産の成長を図ることを目的として積極的な運用を行う。原則として、為替ヘッジは行わない。2月決算。 主要投資対象は、ブラジル・レアル建債券。金利や物価の動向、経済情勢や市場環境等を勘案し、ポートフォリオを構築し、信託財産の着実な成長と安定した収益の確保をめざす。投資する債券は、政府、政府機関、国際機関等が発行するものとする。原則として、為替ヘッジは行わない。ファミリーファンド方式で運用。毎月25日決算。

以上です。
ご検討下さい。

投稿2019/02/21 12:11

hit701

総合スコア148

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BLK

2019/02/27 05:22

大変助かります。無事うまく出力できました。ありがとうございました。
hit701

2019/02/27 09:09

お世話になります。 無事出力出来ましたとの事で、嬉しいです。 貴殿の質問で、かなり学習させて頂きました。 またの機会、助けて頂くかもしれません。 その際は、よろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問