質問編集履歴

4

日付をわかりやすいように表示

2020/11/16 02:22

投稿

XTJP
XTJP

スコア11

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,5 @@
1
+ # 当初の質問
2
+
1
3
  ### 前提・実現したいこと
2
4
 
3
5
  書籍名から出版社名を得て、Googleスプレッドシートにまとめたいです。Colabで作業していますが、一旦csvにダウンロードして手動でスプレッドシートに貼り付けるのでも構いません。
@@ -46,7 +48,7 @@
46
48
 
47
49
 
48
50
 
49
- ## 2020/11/16追記
51
+ # 2020/11/16追記
50
52
 
51
53
  教えていただいた内容を反映してシートに転記するコードを書いたのですがまだうまく動きません。アドバイスを頂けると幸いです。
52
54
 

3

いただいたご指摘を反映しながらsheetに転記するコードを追記

2020/11/16 02:22

投稿

XTJP
XTJP

スコア11

test CHANGED
File without changes
test CHANGED
@@ -30,23 +30,71 @@
30
30
 
31
31
  ### 該当のソースコード
32
32
 
33
-
33
+ (文字数制限の都合上削除しました)
34
+
35
+
36
+
34
-
37
+ ### 試したこと
38
+
39
+ [http://ailaby.com/ndl_search/](http://ailaby.com/ndl_search/)
40
+
41
+ ほとんどこちらのサイトのコードそのままです。
42
+
43
+
44
+
45
+ 楽天ブックスのAPIもためしましたが、ISBNを使用する場合の方法だけがネット検索で見つかったので難儀しています。
46
+
47
+
48
+
49
+ ## 2020/11/16追記
50
+
51
+ 教えていただいた内容を反映してシートに転記するコードを書いたのですがまだうまく動きません。アドバイスを頂けると幸いです。
52
+
53
+ ### 変更点
54
+
55
+ - cellの内容のみを取得
56
+
57
+ - sheetに反映 のコードを自作
58
+
59
+ - [このコードの作者さん](http://ailaby.com/ndl_search/)は1つの本に対して複数のデータを収集し、dfにまとめるものでしたが、私の場合は複数の本に対してそれぞれ1つのデータ(出版社名+あわよくば著者名など)を収集し、sheetにまとめたいので自分なりに編集しました。
60
+
61
+
62
+
63
+ ### 発生している問題・エラーメッセージ
64
+
35
- ```Python 3.6.9
65
+ ``` Python 3.6.9
66
+
36
-
67
+ ---------------------------------------------
68
+
69
+ Search results for cnt=1 mediatype=1 title=そこが知りたかった 中毒診療 from=19800101
70
+
71
+ ---------------------------------------------
72
+
73
+ ---------------------------------------------------------------------------
74
+
37
- from google.colab import auth
75
+ NameError Traceback (most recent call last)
38
-
76
+
39
- from oauth2client.client import GoogleCredentials
77
+ <ipython-input-7-ed4b9090a8a1> in <module>()
78
+
40
-
79
+ 109
80
+
41
- import gspread
81
+ 110 #sheetに反映
42
-
43
-
44
-
82
+
45
- auth.authenticate_user()
83
+ --> 111 worksheet.update_cell(cell.row, cell.col +1, publisher.text)
84
+
46
-
85
+ 112 worksheet.update_cell(cell.row, cell.col +2, item.find('title').text)
86
+
47
- gc = gspread.authorize(GoogleCredentials.get_application_default())
87
+ 113 worksheet.update_cell(cell.row, cell.col +3, author.text)
88
+
89
+
90
+
48
-
91
+ NameError: name 'publisher' is not defined
92
+
49
-
93
+ ```
94
+
95
+ ### 該当のソースコード
96
+
97
+ ``` Python 3.6.9
50
98
 
51
99
  import numpy as np
52
100
 
@@ -70,7 +118,7 @@
70
118
 
71
119
 
72
120
 
73
- cell_list = worksheet.range("A4:A5")
121
+ cell_list = worksheet.range("A4:A10")
74
122
 
75
123
  for cell in cell_list:
76
124
 
@@ -86,7 +134,7 @@
86
134
 
87
135
  params['from'] = '1980-01-01'
88
136
 
89
- params['cnt'] = '2'
137
+ params['cnt'] = '1'
90
138
 
91
139
  params['idx'] = '1'
92
140
 
@@ -110,7 +158,7 @@
110
158
 
111
159
  # 検索リクエスト
112
160
 
113
- r = s.get('http://iss.ndl.go.jp/api/opensearch', params=str(params['title']))
161
+ r = s.get('http://iss.ndl.go.jp/api/opensearch', params=params)
114
162
 
115
163
 
116
164
 
@@ -262,7 +310,19 @@
262
310
 
263
311
  else:
264
312
 
265
- list_map['publisher'].append('')
313
+ list_map['publisher'].append('不明')
314
+
315
+
316
+
317
+ #sheetに反映
318
+
319
+ worksheet.update_cell(cell.row, cell.col +1, publisher.text)
320
+
321
+ worksheet.update_cell(cell.row, cell.col +2, item.find('title').text)
322
+
323
+ worksheet.update_cell(cell.row, cell.col +3, author.text)
324
+
325
+
266
326
 
267
327
 
268
328
 
@@ -276,48 +336,34 @@
276
336
 
277
337
 
278
338
 
279
- params['idx'] = str(idx + cnt)
339
+
280
-
281
- total += cnt
340
+
282
-
283
-
284
-
285
- df = DataFrame({'title' : list_map['title'],
341
+ # df = DataFrame({'title' : list_map['title'],
286
-
342
+
287
- 'ID' : list_map['ID'],
343
+ # 'ID' : list_map['ID'],
288
-
344
+
289
- 'author' : list_map['author'],
345
+ # 'author' : list_map['author'],
290
-
346
+
291
- 'pubDate' : list_map['pubDate'],
347
+ # 'pubDate' : list_map['pubDate'],
292
-
348
+
293
- 'issued' : list_map['issued'],
349
+ # 'issued' : list_map['issued'],
294
-
350
+
295
- 'seriesTitle' : list_map['seriesTitle'],
351
+ # 'seriesTitle' : list_map['seriesTitle'],
296
-
352
+
297
- 'publisher' : list_map['publisher']},
353
+ # 'publisher' : list_map['publisher']},
298
-
354
+
299
- columns = ['title', 'ID', 'author', 'pubDate', 'issued', 'seriesTitle', 'publisher'])
355
+ # columns = ['title', 'ID', 'author', 'pubDate', 'issued', 'seriesTitle', 'publisher'])
300
-
356
+
301
- df.to_csv("books.csv", encoding='utf-8')
357
+ # df.to_csv("books.csv", encoding='utf-8')
302
-
358
+
303
- files.download('books.csv')
359
+ # files.download('books.csv')
304
-
305
-
306
-
360
+
361
+
362
+
307
- df
363
+ # df
364
+
365
+
308
366
 
309
367
  #
310
368
 
311
369
  ```
312
-
313
-
314
-
315
- ### 試したこと
316
-
317
- [http://ailaby.com/ndl_search/](http://ailaby.com/ndl_search/)
318
-
319
- ほとんどこちらのサイトのコードそのままです。
320
-
321
-
322
-
323
- 楽天ブックスのAPIもためしましたが、ISBNを使用する場合の方法だけがネット検索で見つかったので難儀しています。

2

gspreadでセルの情報まで引用していたのをセルの内容のみ引用するように変更→ params['title'] = cell.value

2020/11/16 02:21

投稿

XTJP
XTJP

スコア11

test CHANGED
File without changes
test CHANGED
@@ -80,7 +80,7 @@
80
80
 
81
81
  params = {}
82
82
 
83
- params['title'] = cell
83
+ params['title'] = cell.value
84
84
 
85
85
  params['mediatype'] = '1'
86
86
 

1

URLをMarkdown記法に従って記載

2020/11/16 01:21

投稿

XTJP
XTJP

スコア11

test CHANGED
File without changes
test CHANGED
@@ -314,7 +314,7 @@
314
314
 
315
315
  ### 試したこと
316
316
 
317
- http://ailaby.com/ndl_search/
317
+ [http://ailaby.com/ndl_search/](http://ailaby.com/ndl_search/)
318
318
 
319
319
  ほとんどこちらのサイトのコードそのままです。
320
320