回答編集履歴

2

CSV書き込み追加

2019/01/09 06:49

投稿

barobaro
barobaro

スコア1286

test CHANGED
@@ -6,9 +6,13 @@
6
6
 
7
7
  ```python
8
8
 
9
- import requests
9
+ import csv
10
10
 
11
11
  from urllib.parse import urljoin
12
+
13
+
14
+
15
+ import requests
12
16
 
13
17
  from bs4 import BeautifulSoup
14
18
 
@@ -40,47 +44,59 @@
40
44
 
41
45
 
42
46
 
43
- for i in soup.find_all('h4'):
47
+ with open('result.csv', 'w') as fw:
48
+
49
+ writer = csv.writer(fw, dialect='excel', lineterminator='\n')
44
50
 
45
51
 
46
52
 
47
- # h4より上を検索
48
-
49
- h2 = i.find_previous_sibling('h2').get_text(strip=True)
53
+ for i in soup.select('h4'):
50
-
51
- h3 = i.find_previous_sibling('h3').get_text(strip=True)
52
54
 
53
55
 
54
56
 
57
+ # h4より上を検索
58
+
55
- h4 = i.get_text(strip=True)
59
+ h2 = i.find_previous_sibling('h2').get_text(strip=True)
60
+
61
+ h3 = i.find_previous_sibling('h3').get_text(strip=True)
56
62
 
57
63
 
58
64
 
59
- # h4より下を検索
60
-
61
- p = i.find_next_sibling('p')
65
+ h4 = i.get_text(strip=True)
62
-
63
- link = urljoin(url, p.a.get('href'))
64
66
 
65
67
 
66
68
 
67
- # pのaタグ削除
69
+ # h4より下を検索
68
70
 
69
- p.a.decompose()
71
+ p = i.find_next_sibling('p')
72
+
73
+ link = urljoin(url, p.a.get('href'))
70
74
 
71
75
 
72
76
 
73
- print(h2)
77
+ # pのaタグ削除
74
78
 
75
- print(h3)
79
+ p.a.decompose()
76
80
 
77
- print(h4)
78
81
 
79
- print(p.text.strip())
80
82
 
81
- print(link)
83
+ print(h2)
82
84
 
85
+ print(h3)
86
+
87
+ print(h4)
88
+
89
+ print(p.text.strip())
90
+
91
+ print(link)
92
+
83
- print('-' * 20)
93
+ print('-' * 20)
94
+
95
+
96
+
97
+ # CSV保存
98
+
99
+ writer.writerow([h2, h3, h4, p.text.strip(), link])
84
100
 
85
101
  ```
86
102
 

1

説明追加

2019/01/09 06:49

投稿

barobaro
barobaro

スコア1286

test CHANGED
@@ -1,3 +1,9 @@
1
+ まずh4タグを探してh4タグから上にh2タグ、h3タグを検索
2
+
3
+ h4タグのすぐ下のpタグを検索してURLを抽出、aタグのテキストが邪魔なので削除
4
+
5
+
6
+
1
7
  ```python
2
8
 
3
9
  import requests
@@ -34,7 +40,7 @@
34
40
 
35
41
 
36
42
 
37
- for i in soup.select('h4'):
43
+ for i in soup.find_all('h4'):
38
44
 
39
45
 
40
46
 
@@ -77,3 +83,57 @@
77
83
  print('-' * 20)
78
84
 
79
85
  ```
86
+
87
+ 結果
88
+
89
+ ```
90
+
91
+ フォトギャラリー野鳥図鑑(身近な鳥)
92
+
93
+ 身近な鳥(スズメ大)
94
+
95
+ スズメ
96
+
97
+ スズメ目ハタオリドリ科
98
+
99
+ 全長:14.5cm 翼開長:22.5cm
100
+
101
+ 人家付近でのみ見られる。ほおに黒い斑(幼鳥ではうすい)。
102
+
103
+ https://www.birdfan.net/pg/kind/ord17/fam1727/spe172702/
104
+
105
+ --------------------
106
+
107
+ フォトギャラリー野鳥図鑑(身近な鳥)
108
+
109
+ 身近な鳥(スズメ大)
110
+
111
+ シジュウカラ
112
+
113
+ スズメ目シジュウカラ科
114
+
115
+ 全長:14cm
116
+
117
+ 白いほお、胸から腹にネクタイ模様(太い方が雄)。
118
+
119
+ https://www.birdfan.net/pg/kind/ord17/fam1718/spe171805/
120
+
121
+ --------------------
122
+
123
+ フォトギャラリー野鳥図鑑(身近な鳥)
124
+
125
+ 身近な鳥(スズメ大)
126
+
127
+ カワラヒワ
128
+
129
+ スズメ目アトリ科
130
+
131
+ 全長:14cm
132
+
133
+ 肌色で太めのくちばし、翼と尾に黄色の斑。
134
+
135
+ https://www.birdfan.net/pg/kind/ord17/fam1724/spe172402/
136
+
137
+ --------------------
138
+
139
+ ```