回答編集履歴
1
動作不良を改善
test
CHANGED
@@ -2,10 +2,9 @@
|
|
2
2
|
|
3
3
|
```python
|
4
4
|
import pandas as pd
|
5
|
-
import re
|
6
5
|
import requests
|
7
6
|
import wsgiref.simple_server
|
8
|
-
from urllib.parse import parse_qs,
|
7
|
+
from urllib.parse import parse_qs, urljoin
|
9
8
|
from bs4 import BeautifulSoup
|
10
9
|
|
11
10
|
template = '''
|
@@ -19,23 +18,26 @@
|
|
19
18
|
<form action="/" method="post">
|
20
19
|
<div>
|
21
20
|
<label for="query">検索ワード</label>
|
22
|
-
<input type="text" name="query" id="query" value="
|
21
|
+
<input type="text" name="query" id="query" value="{search_word}">
|
23
22
|
<button type="submit">検索</button>
|
24
23
|
</div>
|
25
24
|
</form>
|
26
25
|
|
27
|
-
|
26
|
+
{result_table}
|
28
27
|
|
29
28
|
</body>
|
30
29
|
</html>
|
31
30
|
'''
|
32
31
|
|
33
32
|
def query(search_word):
|
34
|
-
query_url = 'https://www.amazon.co.jp/s
|
33
|
+
query_url = 'https://www.amazon.co.jp/s/ref=nb_sb_noss_1'
|
34
|
+
headers = {'Referer': 'https://www.amazon.co.jp/', 'User-Agent': 'Mozilla/5.0'}
|
35
|
+
params = {'k': search_word, '__mk_ja_JP': 'カタカナ'}
|
36
|
+
res = requests.get(query_url, headers=headers, params=params)
|
35
|
-
res
|
37
|
+
# print(res.request.url)
|
36
38
|
soup = BeautifulSoup(res.text, 'html.parser')
|
39
|
+
df = pd.DataFrame(columns=['商品名', '価格', '送料', 'ポイント', 'URL'])
|
37
40
|
|
38
|
-
df = pd.DataFrame(columns=['商品名', '価格', '送料', 'ポイント', 'URL'])
|
39
41
|
items = soup.select('div[data-asin]:not([data-asin=""])')
|
40
42
|
for item in items:
|
41
43
|
price = item.select_one('span.a-price-whole')
|
@@ -51,10 +53,7 @@
|
|
51
53
|
return df.to_html(escape=False)
|
52
54
|
|
53
55
|
def application(env, start_response):
|
54
|
-
path = env['PATH_INFO']
|
55
|
-
method = env['REQUEST_METHOD']
|
56
|
+
path, method = env['PATH_INFO'], env['REQUEST_METHOD']
|
56
|
-
response = ''
|
57
|
-
|
58
57
|
if path == '/':
|
59
58
|
if method == 'POST':
|
60
59
|
wsgi_input = env['wsgi.input']
|
@@ -63,12 +62,10 @@
|
|
63
62
|
data = parse_qs(form, keep_blank_values=True)
|
64
63
|
search_word = data['query'][0]
|
65
64
|
table = f'<hr>{query(search_word)}'
|
66
|
-
response = template.re
|
65
|
+
response = template.format(search_word=search_word, result_table=table).encode('utf-8')
|
67
|
-
.replace('@search_word@', search_word)\
|
68
|
-
.encode('utf-8')
|
69
66
|
status = '200 OK'
|
70
67
|
else:
|
71
|
-
response = template.r
|
68
|
+
response = template.format(search_word='', result_table='').encode('utf-8')
|
72
69
|
status = '200 OK'
|
73
70
|
else:
|
74
71
|
# 404 not found
|