回答編集履歴
2
あ
test
CHANGED
@@ -30,11 +30,13 @@
|
|
30
30
|
|
31
31
|
|
32
32
|
|
33
|
+
# URL から HTML を取得する。
|
34
|
+
|
33
35
|
resp = web.get(url)
|
34
36
|
|
37
|
+
# HTML から BeautifulSoup オブジェクトを作成する。
|
38
|
+
|
35
39
|
soup = BeautifulSoup(resp.text, "html.parser")
|
36
|
-
|
37
|
-
print(resp.text)
|
38
40
|
|
39
41
|
|
40
42
|
|
@@ -42,29 +44,47 @@
|
|
42
44
|
|
43
45
|
# URL、タイトル、説明を取得する。
|
44
46
|
|
47
|
+
# <div class="g"> のタグ一覧を取得する。
|
48
|
+
|
45
49
|
for div_elems in soup.select('div.g'):
|
50
|
+
|
51
|
+
# class="r" のタグ配下の a タグを取得する。
|
46
52
|
|
47
53
|
a_elem = div_elems.select('.r > a')
|
48
54
|
|
55
|
+
# class="s" のタグ配下の class="st" のタグを取得する。
|
56
|
+
|
49
57
|
div_elem = div_elems.select('.s > .st')
|
58
|
+
|
59
|
+
# 両方存在しない場合があったので、その場合はスキップする。
|
50
60
|
|
51
61
|
if not a_elem or not div_elem:
|
52
62
|
|
53
63
|
continue
|
54
64
|
|
65
|
+
# select() は選択された要素が1つでもリストで返すので、1個目の要素を取り出す。
|
66
|
+
|
55
67
|
a_elem, div_elem = a_elem[0], div_elem[0]
|
56
68
|
|
57
69
|
|
58
70
|
|
71
|
+
# a_elem タグの href 属性を取得し、'/url?q=' を削除する。
|
72
|
+
|
59
73
|
url = a_elem.get('href').replace('/url?q=', '')
|
74
|
+
|
75
|
+
# ドメイン部分までを取得する。
|
60
76
|
|
61
77
|
url_prefix = '{0.scheme}://{0.netloc}/'.format(urlparse(url))
|
62
78
|
|
79
|
+
# a タグのテキストを取得する。
|
80
|
+
|
63
81
|
title = a_elem.text
|
82
|
+
|
83
|
+
# 説明文を取得する。改行コードは削除する。
|
64
84
|
|
65
85
|
description = div_elem.text.replace('\n','').replace('\r','')
|
66
86
|
|
67
|
-
|
87
|
+
# ドメイン部分までの URL、タイトル、説明をリストに追加する。
|
68
88
|
|
69
89
|
results.append([url_prefix, title, description])
|
70
90
|
|
@@ -76,6 +96,8 @@
|
|
76
96
|
|
77
97
|
results = []
|
78
98
|
|
99
|
+
# キーワード分検索を実行する。
|
100
|
+
|
79
101
|
for keywords in keyword_sets:
|
80
102
|
|
81
103
|
results.extend(google(keywords))
|
@@ -84,12 +106,14 @@
|
|
84
106
|
|
85
107
|
|
86
108
|
|
109
|
+
# CSV に書き込む。
|
110
|
+
|
87
111
|
with open('output.csv', 'w', encoding='utf8') as f:
|
88
112
|
|
89
113
|
writer = csv.writer(f)
|
90
114
|
|
91
|
-
writer.writerow(['タイトル・説明','URL'])
|
115
|
+
writer.writerow(['タイトル・説明','URL']) # ヘッダーを書き込む。
|
92
116
|
|
93
|
-
writer.writerows(results)
|
117
|
+
writer.writerows(results) # データを書き込む。
|
94
118
|
|
95
119
|
```
|
1
a
test
CHANGED
@@ -18,13 +18,7 @@
|
|
18
18
|
|
19
19
|
keyword_sets = [['金属屋根','修理','神奈川'],
|
20
20
|
|
21
|
-
['
|
21
|
+
['瓦屋根','補修','東京']]
|
22
|
-
|
23
|
-
['キーワード2','修理','名古屋'],
|
24
|
-
|
25
|
-
['キーワード3','修理','福岡'],
|
26
|
-
|
27
|
-
['キーワード4','修理','北海道']]
|
28
22
|
|
29
23
|
|
30
24
|
|
@@ -34,7 +28,7 @@
|
|
34
28
|
|
35
29
|
print('googling... ', url)
|
36
30
|
|
37
|
-
|
31
|
+
|
38
32
|
|
39
33
|
resp = web.get(url)
|
40
34
|
|
@@ -42,7 +36,7 @@
|
|
42
36
|
|
43
37
|
print(resp.text)
|
44
38
|
|
45
|
-
|
39
|
+
|
46
40
|
|
47
41
|
results = []
|
48
42
|
|
@@ -60,9 +54,9 @@
|
|
60
54
|
|
61
55
|
a_elem, div_elem = a_elem[0], div_elem[0]
|
62
56
|
|
63
|
-
|
64
57
|
|
58
|
+
|
65
|
-
url = a_elem
|
59
|
+
url = a_elem.get('href').replace('/url?q=', '')
|
66
60
|
|
67
61
|
url_prefix = '{0.scheme}://{0.netloc}/'.format(urlparse(url))
|
68
62
|
|
@@ -70,7 +64,7 @@
|
|
70
64
|
|
71
65
|
description = div_elem.text.replace('\n','').replace('\r','')
|
72
66
|
|
73
|
-
|
67
|
+
|
74
68
|
|
75
69
|
results.append([url_prefix, title, description])
|
76
70
|
|
@@ -84,7 +78,9 @@
|
|
84
78
|
|
85
79
|
for keywords in keyword_sets:
|
86
80
|
|
87
|
-
results
|
81
|
+
results.extend(google(keywords))
|
82
|
+
|
83
|
+
print(results)
|
88
84
|
|
89
85
|
|
90
86
|
|