teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

質問内容の変更

2019/02/11 07:57

投稿

BLK
BLK

スコア15

title CHANGED
@@ -1,1 +1,1 @@
1
- Pythonを使ったクレイピング方法について
1
+ Python CSV出力 空白ペースの削除について
body CHANGED
@@ -1,4 +1,3 @@
1
- Python初心者です。
2
1
  Pythonを使って、投信信託(投信)の概要リスト作成を試みております。
3
2
 
4
3
  モーニングスター社のHPでは、投信の特色を調べることができ、下記の通りURLの末尾をモーニングスター社の投信コードを指定することで、調べたい投信のページに飛ぶことができます。
@@ -10,12 +9,36 @@
10
9
 
11
10
  主要投資対象は、ブラジルのインフラ関連企業の株式。株式への投資にあたっては、ファンダメンタルズ分析に基づき成長性や独自のコーポレートガバナンス評価等の観点から投資銘柄を選定し、信託財産の成長を図ることを目的として積極的な運用を行う。原則として、為替ヘッジは行わない。2月決算。
12
11
 
13
- 下記の通り、1つ銘柄の概要をスクピングするこはできたのですが、一度に複数の投信の概要をクレイピングする方法がかりません
12
+ 事前に調べたい投信のidを下記の通りテキストファイルで用意し以下のスクリプトを用いてCSVファルに結果を出力したころ、余分な空白スペースが出力されてしまいまし。色々調べたのですが、空白ペースを削除する方法がらず困っておりまどなたか解決策をご教示いただけると幸いです。
14
13
 
14
+ id_list_MF.txt
15
+ 2010020501
16
+ 2008111207
17
+
18
+ ```python
19
+ from bs4 import BeautifulSoup
20
+ from urllib.request import urlopen
15
21
  import requests
22
+ import pandas as pd
16
- from bs4 import BeautifulSoup
23
+ from time import sleep
17
- r = requests.get("http://www.morningstar.co.jp/FundData/SnapShot.do?fnc=2010020501")
18
- soup = BeautifulSoup(r.content, "html.parser")
19
- print(soup.find(class_="inftxt").text)
20
24
 
25
+ id_list = open("id_list_MF.txt", "r")
26
+
27
+ lines = id_list.readlines()
28
+
29
+ des = []
30
+
31
+ for line in lines:
21
- モーニングスター社の投信コードについては、別途CSVファイルでリストを用意し、あとは同CSVファイルにあるコードを何らかの方法で引っ張り、上記のURLの末尾部分のみ変更させて、ループすれば良いのではと思いますが、当方の知識不足でできておりません。どなたか良い方法をご教示いただけると幸いです。
32
+ url = "http://www.morningstar.co.jp/FundData/SnapShot.do?fnc=" + line
33
+ r = requests.get(url)
34
+ soup = BeautifulSoup(r.content, "html.parser")
35
+
36
+ for i in soup.find("div", class_="inftxt"):
37
+ des.append(i.string.strip())
38
+
39
+ df = pd.DataFrame({"des":des})
40
+
41
+ print(df)
42
+
43
+ df.to_csv("des_MF.csv", header=False, index=False,encoding='utf_8_sig')
44
+ ```