回答編集履歴
6
コード修正
answer
CHANGED
@@ -77,6 +77,6 @@
|
|
77
77
|
import pandas as pd
|
78
78
|
|
79
79
|
# [[shopの社名, shopの住所, shopのTEL], [...], ...]に変換
|
80
|
-
data = [[shop['name'], shop['address'], shop['tel'] for shop in shops]
|
80
|
+
data = [[shop['name'], shop['address'], shop['tel']] for shop in shops]
|
81
81
|
df = pd.DataFrame(data, columns=['社名', '住所', 'TEL'])
|
82
82
|
```
|
5
コード修正
answer
CHANGED
@@ -41,7 +41,7 @@
|
|
41
41
|
address = shop_el.find('p', attrs={'class': 'shop_address'})
|
42
42
|
if address:
|
43
43
|
shop['address'] = address.text
|
44
|
-
tel = shop_el.find('p', attrs
|
44
|
+
tel = shop_el.find('p', attrs={'class':'shop_tel'})
|
45
45
|
if tel:
|
46
46
|
shop['tel'] = tel.text
|
47
47
|
shops.append(shop)
|
4
表記修正
answer
CHANGED
@@ -61,9 +61,9 @@
|
|
61
61
|
shops = flatten([get_shops(url) for url in urls])
|
62
62
|
```
|
63
63
|
|
64
|
-
`get_shops()`では`shop`ごとに`{'name': '...', 'address': '...', 'tel': '...'}`という辞書を作ってその
|
64
|
+
`get_shops()`では`shop`ごとに`{'name': '...', 'address': '...', 'tel': '...'}`という辞書を作ってそのリストを返すようにしています。
|
65
65
|
|
66
|
-
`name`/`address`/`tel`それぞれの
|
66
|
+
`name`/`address`/`tel`それぞれのリストがほしければ以下のようにしましょう。
|
67
67
|
|
68
68
|
```python
|
69
69
|
names = [shop['name'] for shop in shops]
|
3
誤字修正
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
2ページ目のURLを見てみると`https://el.e-shops.jp/local/jb/6008/jn/6000523/cn/23109/2.html`のように末尾に`2.html`が付いています。別の区の3ページ目も確認すると末尾が`3.html`でした。
|
2
2
|
|
3
|
-
ということは`base_url`を`https://el.e-shops.jp/local/jb/6008/jn/6000523/cn/23109/`とすると、
|
3
|
+
ということは`base_url`を`https://el.e-shops.jp/local/jb/6008/jn/6000523/cn/23109/`とすると、2ページ目は`base_url + '2.html'`、3ページ目は`base_url + '3.html'`……となっているわけです。
|
4
4
|
|
5
5
|
そして、最後のページの次のページ(例えば`https://el.e-shops.jp/local/jb/6008/jn/6000523/cn/23109/3.html`)を見てみると、`.list-tel-shop`という要素がないページが表示されます。
|
6
6
|
|
2
dataframeへの変換を追記
answer
CHANGED
@@ -69,4 +69,14 @@
|
|
69
69
|
names = [shop['name'] for shop in shops]
|
70
70
|
address = [shop['address'] for shop in shops]
|
71
71
|
tels = [shop['tel'] for shop in shops]
|
72
|
+
```
|
73
|
+
|
74
|
+
これらを一列づつ追加してもいいですが、一気に`pd.Dataframe`にした方がいい気がします。
|
75
|
+
|
76
|
+
```python
|
77
|
+
import pandas as pd
|
78
|
+
|
79
|
+
# [[shopの社名, shopの住所, shopのTEL], [...], ...]に変換
|
80
|
+
data = [[shop['name'], shop['address'], shop['tel'] for shop in shops]
|
81
|
+
df = pd.DataFrame(data, columns=['社名', '住所', 'TEL'])
|
72
82
|
```
|
1
説明とコードを追記
answer
CHANGED
@@ -61,4 +61,12 @@
|
|
61
61
|
shops = flatten([get_shops(url) for url in urls])
|
62
62
|
```
|
63
63
|
|
64
|
-
`get_shops()`では`shop`ごとに`{'name': '...', 'address': '...', 'tel': '...'}`という辞書を作ってその配列を返すようにしています。
|
64
|
+
`get_shops()`では`shop`ごとに`{'name': '...', 'address': '...', 'tel': '...'}`という辞書を作ってその配列を返すようにしています。
|
65
|
+
|
66
|
+
`name`/`address`/`tel`それぞれの配列がほしければ以下のようにしましょう。
|
67
|
+
|
68
|
+
```python
|
69
|
+
names = [shop['name'] for shop in shops]
|
70
|
+
address = [shop['address'] for shop in shops]
|
71
|
+
tels = [shop['tel'] for shop in shops]
|
72
|
+
```
|