質問編集履歴

4

2020/12/18 03:14

投稿

sasu46
sasu46

スコア9

test CHANGED
File without changes
test CHANGED
File without changes

3

2020/12/18 03:14

投稿

sasu46
sasu46

スコア9

test CHANGED
File without changes
test CHANGED
File without changes

2

2020/12/17 10:33

投稿

sasu46
sasu46

スコア9

test CHANGED
File without changes
test CHANGED
File without changes

1

2020/12/13 11:53

投稿

sasu46
sasu46

スコア9

test CHANGED
File without changes
test CHANGED
@@ -2,19 +2,11 @@
2
2
 
3
3
 
4
4
 
5
- 伊沢剛さんの「面倒な作業が秒速で終わる Excel×Python」で勉強している初心者です。
5
+ プログラミング初心者です。対象ページからスクレイピングし、エクセルに各行追加していくというプログラムを作ろうとしています。
6
6
 
7
+ 皆さんお忙しい中、申し訳ございません。
7
8
 
8
-
9
- 書籍に書いてあるコードを実行たら問題な動作しました
9
+ よろしくお願いしま
10
-
11
- 書籍にはアマゾンサイトかにアクセスし、自分の気になる商品のURLをコピーしテキストBOXに張り付けるとエクセルに出力し、商品名、価格、URLなどが書かれる。というコードです。
12
-
13
-
14
-
15
- 今回僕がやりたいことは、セルを指定してとりあえず価格だけを抽出したいと思い自分なりに書いてみました。
16
-
17
- 価格は抽出できたものの、例えばG2セルに書き込んだら次に新しいURLが入力されたらG3セルに書き出すという風になるのが理想です。
18
10
 
19
11
 
20
12
 
@@ -24,11 +16,57 @@
24
16
 
25
17
 
26
18
 
19
+
20
+
21
+ 早速ですが私が想定している作りたいものは...プログラムを実行→ウィンドウが出る→ミスミサイトの商品ページのURLをコピペ→URL取込用ウィンドウに貼り付け&取込ボタンを押して取り込む→エクセルの指定のセルに値を書き込み。ウィンドウに違う商品ページのURLを続けて貼り付け&取り込むと既存に書き込みしたセルの真下のセルに新しく書き込む。というものを想定しています。
22
+
23
+
24
+
25
+ 現在の私のコードを実行すると...
26
+
27
+
28
+
29
+ ①URL取込用のウィンドウが出てくる。
30
+
31
+ ②対象のサイトページのURLをコピーする。
32
+
33
+ ③URL取込用ウィンドウをクリックすると自動でコピーしたURLが貼り付けられる。
34
+
35
+ ④データ取得ボタンを押す。
36
+
37
+ ⑤「エクセルデータの書き出しが完了しました。」と画面に表示される。
38
+
39
+ ※リストという名前のExcel BookがPythonファイルと同じところに入っている前提。
40
+
41
+ ⑥Excelを開くと、G列の2行目に価格が入力される。
42
+
43
+ ⑦続けてURL取込用ウィンドウに別の商品ページのURLを貼り付け&取り込むとG列の2行目に上書きされてしまう。
44
+
45
+
46
+
47
+
48
+
49
+ こんな感じになります。価格は無事入力されるのですが、上記のように続けてまた別のURLをウィンドウに貼り付け取り込むと、G列の2行目に上書きされてしまいます。
50
+
51
+
52
+
53
+ 理想としては、セルの中に値が入っていれば、そのすぐ下のセルに値を入れる。
54
+
55
+ という感じにしたいです。
56
+
57
+ それで、appendというメソッドを使ってみたのですが、エラーは出ないもののうまく下の行に追加とは行かないです。
58
+
59
+ 説明が下手で申し訳ありません。。。
60
+
61
+
62
+
27
63
  ### 該当のソースコード
28
64
 
29
65
 
30
66
 
31
67
  ```Python
68
+
69
+
32
70
 
33
71
  import requests
34
72
 
@@ -64,23 +102,29 @@
64
102
 
65
103
  html_soup = BeautifulSoup(res, "html.parser")
66
104
 
67
- price = html_soup.find('span', class_='mc-num').contents[0]
105
+ price = html_soup.find('span', class_='mc-num').contents[0]#サイトの価格を取得
68
106
 
69
-
107
+ data = [price]
108
+
109
+
70
110
 
71
111
  wb = openpyxl.load_workbook('リスト.xlsx')
72
112
 
73
- sheet = wb.active
113
+ sheet = http://wb.active
74
114
 
75
- for i in range(2,3):
115
+
76
116
 
77
- sheet.cell(column=7, row=i + 1, value=price) # A列(title)
117
+ for i ,prices in enumerate(data, start=2):
78
118
 
79
-
119
+ sheet.cell(row=i, column=7, value=prices)
80
120
 
81
- # 保存して閉じる
121
+ data.append(data)
82
122
 
123
+
124
+
125
+ # 保存して閉じる
126
+
83
- wb.save('リスト.xlsx')
127
+ http://wb.save('リスト.xlsx')
84
128
 
85
129
  wb.close()
86
130
 
@@ -90,7 +134,7 @@
90
134
 
91
135
  #GUIの用意
92
136
 
93
- root = tk.Tk()
137
+ root = http://tk.Tk()
94
138
 
95
139
  root.title("商品データ書き出し") #タイトルの設定
96
140
 
@@ -114,6 +158,8 @@
114
158
 
115
159
  root.mainloop() #ウィンドウを表示
116
160
 
161
+
162
+
117
163
  ```
118
164
 
119
165
 
@@ -122,15 +168,19 @@
122
168
 
123
169
 
124
170
 
125
- いろいろ思考錯誤し調べて実行しての繰り返しで、結局できませんでした
171
+ URL取込用ウィンドウに続けURLを追加していくで、追加たら既存のデータを上書きせずに真下のセルに値を入力したいのappendメソッドを使っていますがエラーは出ないものうまく書込めません。
126
172
 
173
+
174
+
175
+ dataというリストに格納してそこに新しい値を追加しても、エクセルの既存の値が入っているセルの真下に追加ということはできませんよね?
176
+
177
+
178
+
127
- appendなどを使と追加、追加、できるといてあったのですがイマイチど使う分からず断念。
179
+ そもそもappendやfor文などでこいう場合はのでしょうか
128
180
 
129
181
 
130
182
 
131
183
  分かりずらい説明で申し訳ありません。
132
-
133
- よろしくお願いいたします。
134
184
 
135
185
 
136
186
 
@@ -138,8 +188,6 @@
138
188
 
139
189
 
140
190
 
141
- また、できになったら、価格や型番、商品名をリスに格納してそのデータエクセルに追加していく、という物もやってみたいと思っています。
191
+ URLを取得すサイトは【ミスミ】といサイトを想定しています。
142
192
 
143
-
144
-
145
- どうか、よろしくお願いいたします。。。
193
+ https://jp.misumi-ec.com/