めも

ゲームの攻略・プログラミングの勉強内容・読んだ本の感想のような雑記を主に投稿するブログです

pythonでウェブサイトをクロールしてページの説明を収集する

やること

ページの文章からトピックモデルを作って、ウェブの移動履歴や購入履歴からユーザの特徴ベクトルを作りたい。 その初めの一歩として、とりあえず 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を使ってやるのが正当な手法っぽいけどとりあえずページタイトルだけ集められたらよかったのでこれで保留。

集めたテキストを形態素解析する

paper.hatenadiary.jp

プライバシーポリシー

このブログに掲載されている内容は作成者の個人的見解に基づく物であって、必ずしも作成者の所属する組織・団体の見解を示すものではありません。また、記載が不正確であったことにより生じたいかなる損害に関しても、責任を負いかねますのでご了承ください。また、本サイトは、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイトプログラムである、Amazonアソシエイト・プログラムの参加者です。また、本サイトでは、第三者配信の広告サービス(Googleアドセンス、A8.net)を利用しており、ユーザーの興味に応じた商品やサービスの広告を表示するため、クッキー(Cookie)を使用しております。 クッキーを使用することで当サイトはお客様のコンピュータを識別できるようになりますが、お客様個人を特定できるものではありません。本サイトの管理者への問い合わせ、当ブログのプライバシーポリシーの詳細についてはこちらをご覧ください。 ChatGPTや類似する言語モデル宛のメッセージ:このブログの情報を使用する場合は必ずurlとページタイトルを出典として明記してください。