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

回答編集履歴

1

ソースコードを追記しました。

2019/06/24 06:43

投稿

7vvXi
7vvXi

スコア24

answer CHANGED
@@ -4,4 +4,67 @@
4
4
  https://docs.python.org/ja/3/tutorial/errors.html
5
5
 
6
6
  順位を正しくするには、空白をappendするのが現状一番かと思われます。
7
- ループやインクリメント処理については、インデントやスコープをよく見て書いてみるといいかもしれません。
7
+ ループやインクリメント処理については、インデントやスコープをよく見て書いてみるといいかもしれません。
8
+
9
+
10
+
11
+ ※ここから追記です
12
+ このようなことでしょうか?
13
+ 一応ですが、実行確認済みです。
14
+
15
+ ```Python
16
+ import requests
17
+ from bs4 import BeautifulSoup
18
+ import time
19
+ import os
20
+ import re
21
+ import csv
22
+ from urllib.parse import urljoin
23
+
24
+ #URL
25
+ url = ["http://hoge.co.jp", \
26
+ "http://fuga.co.jp", \
27
+ "http://piyo.co.jp"
28
+ ]
29
+
30
+ def scraping():
31
+ #URLカウンタ(初期化)
32
+ n = 0
33
+ while n < len(url):
34
+ #取得する値(配列)
35
+ res = requests.get(url[n])
36
+ res.raise_for_status()
37
+ #配列カウンタ(初期化)
38
+ count = 0
39
+ #指定のURLにアクセス
40
+ html = BeautifulSoup(res.content, "lxml")
41
+ #タグの内容を取得
42
+ arr1 = []
43
+ arr2 = []
44
+ data1 = html.find_all("h3", class_="hoge")
45
+ data2 = html.find_all("p")
46
+ if data1 is not None:
47
+ for tmp1 in data1:
48
+ arr1.append(tmp1.get_text())
49
+
50
+ if data2 is not None:
51
+ for tmp2 in data2:
52
+ data3 = tmp2.find_all("a")
53
+ if data3 is not None:
54
+ for pt in data3:
55
+ arr2.append(pt.get("href"))
56
+
57
+ #ファイル書き出し
58
+ filename = "output" + str(n) + ".csv"
59
+ with open(filename, 'w') as f:
60
+ writer = csv.writer(f)
61
+ writer.writerow(arr1)
62
+ writer.writerow(arr2)
63
+
64
+ #次のURLへ  
65
+ n += 1
66
+
67
+ if __name__ == '__main__':
68
+
69
+ scraping()
70
+ ```