回答編集履歴

3

追記

2018/06/18 06:13

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -70,6 +70,98 @@
70
70
 
71
71
 
72
72
 
73
+ 追記
74
+
75
+ ---
76
+
77
+ 順調なようなので、追加で少しお手伝い。
78
+
79
+ ファイルに書き出す方法は、主に次の二つのうちいずれかです。
80
+
81
+
82
+
83
+ - **csvライターをやり取りする方法**
84
+
85
+ ```Python
86
+
87
+ def scrape(url, csv_writer):
88
+
89
+ ...略
90
+
91
+
92
+
93
+ csv_writer.writerows(elems)
94
+
95
+
96
+
97
+
98
+
99
+ def main(f):
100
+
101
+ writer = csv.writer(f)
102
+
103
+
104
+
105
+ ...略
106
+
107
+ for page_id in page_id_list:
108
+
109
+ scrape(f'https://news.yahoo.co.jp/pickup/{page_id}', writer)
110
+
111
+
112
+
113
+
114
+
115
+ if __name__ == '__main__':
116
+
117
+ with open('news.csv', 'w', encoding='CP932', errors='ignore') as f:
118
+
119
+ main(f)
120
+
121
+ ```
122
+
123
+
124
+
125
+ 毎回開きなおすと上書きされてしまうことにご注意ください。
126
+
127
+
128
+
129
+ - **結果をリストにまとめておく方法**
130
+
131
+ ```Python
132
+
133
+ def scrape(url):
134
+
135
+ ...略
136
+
137
+
138
+
139
+
140
+
141
+ def main():
142
+
143
+ result = []
144
+
145
+
146
+
147
+ ...略
148
+
149
+ for page_id in page_id_list:
150
+
151
+ result.extend(scrape(f'https://news.yahoo.co.jp/pickup/{page_id}'))
152
+
153
+
154
+
155
+ with open('news.csv', 'w', encoding='CP932', errors='ignore') as f:
156
+
157
+ writer = csv.writer(f)
158
+
159
+ f.writerows(result)
160
+
161
+ ```
162
+
163
+
164
+
73
165
  コードの書き方について
74
166
 
75
167
  ---

2

追記

2018/06/18 06:13

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
 
21
- time.sleep(1)
21
+ time.sleep(1) # 一秒待つ。相手方のサーバに負担をかけすぎないための配慮。
22
22
 
23
23
 
24
24
 
@@ -26,7 +26,7 @@
26
26
 
27
27
  def main():
28
28
 
29
- page_id_list = ファイルからid読み込む
29
+ ファイルからidを読み込み、page_id_listを作る
30
30
 
31
31
  for page_id in page_id_list:
32
32
 
@@ -67,3 +67,15 @@
67
67
  page_id_list = [int(row) for row in f]
68
68
 
69
69
  ```
70
+
71
+
72
+
73
+ コードの書き方について
74
+
75
+ ---
76
+
77
+ teratailには、上記のようにコードを見やすく表示する機能があります。
78
+
79
+ 質問編集画面を開き、コードを選択した状態で<code>ボタンを押してください。
80
+
81
+ ![Python](56957fe805d9d7befa7dba6a98676d2b.gif)

1

追記

2018/06/17 16:10

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -41,3 +41,29 @@
41
41
  main()
42
42
 
43
43
  ```
44
+
45
+
46
+
47
+ ---
48
+
49
+ 肝心の『ファイルからidを読み込む』部分は、例えば次のように書けます。
50
+
51
+ ```plain
52
+
53
+ 6286588
54
+
55
+ 6286594
56
+
57
+ 6286582
58
+
59
+ ```
60
+
61
+
62
+
63
+ ```Python
64
+
65
+ with open('id_list.txt') as f:
66
+
67
+ page_id_list = [int(row) for row in f]
68
+
69
+ ```