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

回答編集履歴

3

追記

2018/06/18 06:13

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -34,6 +34,52 @@
34
34
  page_id_list = [int(row) for row in f]
35
35
  ```
36
36
 
37
+ 追記
38
+ ---
39
+ 順調なようなので、追加で少しお手伝い。
40
+ ファイルに書き出す方法は、主に次の二つのうちいずれかです。
41
+
42
+ - **csvライターをやり取りする方法**
43
+ ```Python
44
+ def scrape(url, csv_writer):
45
+ ...略
46
+
47
+ csv_writer.writerows(elems)
48
+
49
+
50
+ def main(f):
51
+ writer = csv.writer(f)
52
+
53
+ ...略
54
+ for page_id in page_id_list:
55
+ scrape(f'https://news.yahoo.co.jp/pickup/{page_id}', writer)
56
+
57
+
58
+ if __name__ == '__main__':
59
+ with open('news.csv', 'w', encoding='CP932', errors='ignore') as f:
60
+ main(f)
61
+ ```
62
+
63
+ 毎回開きなおすと上書きされてしまうことにご注意ください。
64
+
65
+ - **結果をリストにまとめておく方法**
66
+ ```Python
67
+ def scrape(url):
68
+ ...略
69
+
70
+
71
+ def main():
72
+ result = []
73
+
74
+ ...略
75
+ for page_id in page_id_list:
76
+ result.extend(scrape(f'https://news.yahoo.co.jp/pickup/{page_id}'))
77
+
78
+ with open('news.csv', 'w', encoding='CP932', errors='ignore') as f:
79
+ writer = csv.writer(f)
80
+ f.writerows(result)
81
+ ```
82
+
37
83
  コードの書き方について
38
84
  ---
39
85
  teratailには、上記のようにコードを見やすく表示する機能があります。

2

追記

2018/06/18 06:13

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -8,11 +8,11 @@
8
8
  res = requests.get(url)
9
9
  ...略
10
10
 
11
- time.sleep(1)
11
+ time.sleep(1) # 一秒待つ。相手方のサーバに負担をかけすぎないための配慮。
12
12
 
13
13
 
14
14
  def main():
15
- page_id_list = ファイルからidを読み込
15
+ ファイルからidを読み込み、page_id_listを作る
16
16
  for page_id in page_id_list:
17
17
  scrape(f'https://news.yahoo.co.jp/pickup/{page_id}')
18
18
 
@@ -32,4 +32,10 @@
32
32
  ```Python
33
33
  with open('id_list.txt') as f:
34
34
  page_id_list = [int(row) for row in f]
35
- ```
35
+ ```
36
+
37
+ コードの書き方について
38
+ ---
39
+ teratailには、上記のようにコードを見やすく表示する機能があります。
40
+ 質問編集画面を開き、コードを選択した状態で<code>ボタンを押してください。
41
+ ![Python](56957fe805d9d7befa7dba6a98676d2b.gif)

1

追記

2018/06/17 16:10

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -19,4 +19,17 @@
19
19
 
20
20
  if __name__ == '__main__':
21
21
  main()
22
+ ```
23
+
24
+ ---
25
+ 肝心の『ファイルからidを読み込む』部分は、例えば次のように書けます。
26
+ ```plain
27
+ 6286588
28
+ 6286594
29
+ 6286582
30
+ ```
31
+
32
+ ```Python
33
+ with open('id_list.txt') as f:
34
+ page_id_list = [int(row) for row in f]
22
35
  ```