無職の雑記

Garbage in, garbage out.

2016/07/05

Pythonのコードを少し書いて、あとは英語、スーパーで食料の買い出し、図書館で少し勉強しただけで1日が終わる。

 ・・・

SATやGREのワードリストを見つけたので、スクレイピングしてみた。1500語弱。非常に迷走した。

Word Lists : Vocabulary word lists for SAT, PSAT, GRE and other tests

まず、語彙とその意味を取得(色々とアドホックすぎる感じで、自分でも既に意味が分からない):

import requests, bs4, time

url = 'http://www.majortests.com/word-lists/'

print('Downloading page %s...' % url)
res = requests.get(url)
res.raise_for_status()

soup = bs4.BeautifulSoup(res.text, 'lxml')

words = {}

for l in soup.find_all('a'):
    l = l.get('href')
    if (l != None) and (l.endswith('html')):
        url = 'http://www.majortests.com' + l
        
        print('Downloading page %s...' % url)
        time.sleep(3)
        res = requests.get(url)
        res.raise_for_status()
        
        soup = bs4.BeautifulSoup(res.text, 'lxml')
        
        for w in soup.find_all('tr'):
            words[w.th.text] = w.td.text

で、結果をCSVファイルに保存 (保存に関しては:How do I write a Python dictionary to a csv file? - Stack Overflow):

import csv

with open('Word List.csv', 'w') as f:
    w = csv.writer(f)
    w.writerows(words.items())

すると、こんな形でCSVになる(1494語の単語帳!):

f:id:unEmployed:20160705184633p:plain

一応結論まで出たので良かった。まあ、元データの順序が保存されてないとか、書き方が滅茶苦茶すぎるとか、色々欠陥だらけだけれど。書けないコードを試行錯誤するのは(少しなら)楽しい。

明日は認定日。遅刻せずにハロワに行かないといけない。

広告を非表示にする