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

回答編集履歴

3

検索パラメタの"from"を削除

2020/11/16 14:21

投稿

akiruno-oneone
akiruno-oneone

スコア815

answer CHANGED
@@ -28,4 +28,22 @@
28
28
  worksheet.update_cell(cell.row, cell.col +1, publisher.text)
29
29
  worksheet.update_cell(cell.row, cell.col +2, item.find('title').text)
30
30
  worksheet.update_cell(cell.row, cell.col +3, author.text)
31
+ ```
32
+
33
+ 検索APIを確認してみました。
34
+ [https://iss.ndl.go.jp/information/wp-content/uploads/2020/03/ndlsearch_api_20200302_jp.pdf](https://iss.ndl.go.jp/information/wp-content/uploads/2020/03/ndlsearch_api_20200302_jp.pdf)
35
+ 年月日の指定で、月を指定すると、年だけのものにはヒットしないようです。
36
+ パラメタの'from'をコメントアウトして見て下さい。
37
+ ```python
38
+ # params['from'] = '1980-01-01'
39
+ ```
40
+ あと、以下のコードの意味はなんでしょうか。
41
+ 検索が成功したとき、len(items)がcntに等しくなってしまうため。
42
+ 無限ループになってしまいます。
43
+ 確認して下さい。
44
+ ```python
45
+ cnt = int(params['cnt'])
46
+ idx = int(params['idx'])
47
+ if len(items) < cnt:
48
+ break
31
49
  ```

2

NameError: name 'publisher' is not definedについて

2020/11/16 14:21

投稿

akiruno-oneone
akiruno-oneone

スコア815

answer CHANGED
@@ -16,4 +16,16 @@
16
16
  valueで値を参照してください。
17
17
  ```python
18
18
  params['title'] = cell.value
19
+ ```
20
+
21
+ 参照している変数publisherがforループの外です。
22
+ publisherの処理が、forループの内側のときははインデントをforと合わせる必要があります。
23
+ ```python
24
+ else:
25
+ list_map['publisher'].append('不明')
26
+ #インデントがあっていないので、forのインデントに合わせてください
27
+ #sheetに反映
28
+ worksheet.update_cell(cell.row, cell.col +1, publisher.text)
29
+ worksheet.update_cell(cell.row, cell.col +2, item.find('title').text)
30
+ worksheet.update_cell(cell.row, cell.col +3, author.text)
19
31
  ```

1

cellの代入を変更しました。

2020/11/16 03:36

投稿

akiruno-oneone
akiruno-oneone

スコア815

answer CHANGED
@@ -10,4 +10,10 @@
10
10
  ```python
11
11
  # 検索リクエスト
12
12
  r = s.get('http://iss.ndl.go.jp/api/opensearch', params=params)
13
+ ```
14
+
15
+ cell_list = worksheet.range("A4:A5")だと、cell情報も入っているため、これを参照するときは
16
+ valueで値を参照してください。
17
+ ```python
18
+ params['title'] = cell.value
13
19
  ```