やること
ページの文章からトピックモデルを作って、ウェブの移動履歴や購入履歴からユーザの特徴ベクトルを作りたい。 その初めの一歩として、とりあえず url の一覧からページの説明を取得してcsvに保存しときたい。
コード
import numpy as np import pandas as pd import seaborn as sb import urllib2, time from BeautifulSoup import BeautifulSoup import matplotlib.pyplot as plt;plt.style.use('ggplot') pagedata = loaddata() # pagedata = [ページ名、アドレスのデータ] data = [] for (name, address) in np.array(pagedata): time.sleep(1.0) try: urls = address html = urllib2.urlopen(urls).read() soup = BeautifulSoup(html) desc = soup.findAll(attrs={"name":"description"})[0]['content'].encode('utf-8') data += [(name, address, desc)] except: desc = '' data += [(name, address, desc)] print (name, address, desc) if i%10==0: print (name, address, desc) print('..save', i, pagedata.shape) savedata = pd.DataFrame(data) savedata.columns = ['name', 'adress', 'desc'] savedata.to_csv('site_descriptions.csv', sep='\t')
とりあえず 10ステップごとにデータを保存しておくことにした。
soup.findAll(attrs={"name":"description"})[0]['content'].encode('utf-8')
の箇所さえ書き換えたり追加したりしたらいくらでも適当にデータを集めてくることができる。
Scrapy | A Fast and Powerful Scraping and Web Crawling Framework
上記のScrapyを使ってやるのが正当な手法っぽいけどとりあえずページタイトルだけ集められたらよかったのでこれで保留。