こんにちは
以下でどうでしょう?
(teratail) [jun68ykt@mbp15 q161850]$ date
2018年 12月 4日 火曜日 05時16分53秒 JST
(teratail) [jun68ykt@mbp15 q161850]$ cat scraper.py
python3
1from bs4 import BeautifulSoup
2import requests
3
4TARGET_URL = 'https://ja.wikipedia.org/wiki/2000年シドニーオリンピックのメダル受賞数一覧'
5
6with open('Sydney_2000_Medals.csv', 'w', encoding='utf-8') as f:
7 soup = BeautifulSoup(requests.get(TARGET_URL).text, 'html.parser')
8 table = soup.select('table.wikitable.sortable')[0]
9 for row in table.find_all('tr'):
10 cells = []
11 for cell in row.find_all(['td', 'th']):
12 cells.append(cell.get_text().strip())
13 f.write("%s\n" % ','.join(cells))
(teratail) [jun68ykt@mbp15 q161850]$ python -V
Python 3.7.0
(teratail) [jun68ykt@mbp15 q161850]$ python scraper.py
(teratail) [jun68ykt@mbp15 q161850]$ ls -l Sydney_2000_Medals.csv
-rw-r--r-- 1 jun68ykt staff 2235 12 4 05:17 Sydney_2000_Medals.csv
(teratail) [jun68ykt@mbp15 q161850]$ head Sydney_2000_Medals.csv
csv
1順,国・地域,金,銀,銅,計
21,アメリカ合衆国,36,24,31,91
32,ロシア,32,28,29,89
43,中国,28,16,15,59
54,オーストラリア(開催国),16,25,17,58
65,ドイツ,13,17,26,56
76,フランス,13,14,11,38
87,イタリア,13,8,13,34
98,オランダ,12,9,4,25
109,キューバ,11,11,7,29
(teratail) [jun68ykt@mbp15 q161850]$ tail Sydney_2000_Medals.csv
csv
171,バルバドス,0,0,1,1
271,チリ,0,0,1,1
371,アイスランド,0,0,1,1
471,インド,0,0,1,1
571,イスラエル,0,0,1,1
671,クウェート,0,0,1,1
771,キルギス,0,0,1,1
871,マケドニア共和国,0,0,1,1
971,カタール,0,0,1,1
10合計,297,299,326,922
(teratail) [jun68ykt@mbp15 q161850]$
(使用PC: macbook pro, OS 10.12.6)
追記
Widows のデスクトップにCSVを出力させたいとのことですが、その場合は、上記の回答に書いたコードの以下の部分
python
1with open('Sydney_2000_Medals.csv', 'w', encoding='utf-8') as f:
で、オープンするファイルの文字列 'Sydney_2000_Medals.csv'
の部分を、Windowsのデスクトップに作成したいファイルへの(絶対)パスを書けば良いです。
あいにく手元に Windows PCがないので試していませんが、
python
1with open(r'C:\Users\foo\Desktop\Sydney_2000_Medals.csv', 'w') as f:
のようにするとデスクトップに出力されるのではと思います。ただし上記で foo
の部分は、ご自身のユーザー名に置き換えてください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。