質問編集履歴

1

質問内容の変更

2019/02/11 07:57

投稿

BLK
BLK

スコア15

test CHANGED
@@ -1 +1 @@
1
- Pythonを使ったクレイピング方法について
1
+ Python CSV出力 空白ペースの削除について
test CHANGED
@@ -1,5 +1,3 @@
1
- Python初心者です。
2
-
3
1
  Pythonを使って、投信信託(投信)の概要リスト作成を試みております。
4
2
 
5
3
 
@@ -22,20 +20,68 @@
22
20
 
23
21
 
24
22
 
25
- 下記の通り、1つ銘柄の概要をスクピングするとはできたのですが、一度に複数の投信の概要スクレイピングする方法がかりません
23
+ 事前に調べたい投信のidを下記の通りテキストファイルで用意し以下のスクリプトを用いてCSVファルに結果を出力したとろ、余分な空白スペースが出力されてしまいまし。色々調べたのですが、空白スペース削除する方法がらず困っておりまどなたか解決策をご教示いただけると幸いです。
26
24
 
27
25
 
28
26
 
29
- import requests
27
+ id_list_MF.txt
28
+
29
+ 2010020501
30
+
31
+ 2008111207
32
+
33
+
34
+
35
+ ```python
30
36
 
31
37
  from bs4 import BeautifulSoup
32
38
 
33
- r = requests.get("http://www.morningstar.co.jp/FundData/SnapShot.do?fnc=2010020501")
39
+ from urllib.request import urlopen
34
40
 
35
- soup = BeautifulSoup(r.content, "html.parser")
41
+ import requests
36
42
 
43
+ import pandas as pd
44
+
37
- print(soup.find(class_="inftxt").text)
45
+ from time import sleep
38
46
 
39
47
 
40
48
 
49
+ id_list = open("id_list_MF.txt", "r")
50
+
51
+
52
+
53
+ lines = id_list.readlines()
54
+
55
+
56
+
57
+ des = []
58
+
59
+
60
+
61
+ for line in lines:
62
+
41
- モーニングスター社の投信コードについては、別途CSVファイルでリストを用意し、あとは同CSVファイルにあるコードを何らかの方法で引っ張り、上記のURLの末尾部分のみ変更させて、ループすれば良いのではと思いますが、当方の知識不足でできておりません。どなたか良い方法をご教示いただけると幸いです。
63
+ url = "http://www.morningstar.co.jp/FundData/SnapShot.do?fnc=" + line
64
+
65
+ r = requests.get(url)
66
+
67
+ soup = BeautifulSoup(r.content, "html.parser")
68
+
69
+
70
+
71
+ for i in soup.find("div", class_="inftxt"):
72
+
73
+ des.append(i.string.strip())
74
+
75
+
76
+
77
+ df = pd.DataFrame({"des":des})
78
+
79
+
80
+
81
+ print(df)
82
+
83
+
84
+
85
+ df.to_csv("des_MF.csv", header=False, index=False,encoding='utf_8_sig')
86
+
87
+ ```