HTMLを解析 Beautiful Soup

2012/2/18

Python2.5.7 Beautiful Soup 3.2.0

Beautiful Soup = pythonで動作するHTMLとXMLのパーサー。ビューティフォー!

ちなみにHTMLなどから必要な部分を抽出することを スクレイピング と呼ぶらしい。

Beautiful Soup
http://www.crummy.com/software/BeautifulSoup/

ウェブ上のHTMLソース取得

import urllib

url = "http://sites.google.com/site/tibracode"
f = urllib.urlopen(url)
html_src = f.read()


特定タグで囲まれた部分の取得

import BeautifulSoup

------

soup = BeautifulSoup.BeautifulSoup(html_src)

title = soup.find('title')

print(title)
# <title>TB-code</title>


findメソッドは最初に見つけたのを抽出する。すべて取得したい場合にはfindAllメソッド

all_a = soup.findAll('a')


特定タグで囲まれた部分の文字だけ取得

soup = BeautifulSoup.BeautifulSoup(html_src)

title = soup.find('title')

print(title.string)
# TB-code
タグ名
title.name
# title


特定タグの、さらに特定の属性がついてるものの取得

soup = BeautifulSoup.BeautifulSoup(html_src)

link = soup.find('link',attrs={'rel':'shortcut icon'})

print(link)
# <link rel="shortcut icon" type="image/x-icon" href="//www.google.com/images/icons/product/sites-16.ico" />


タグについてる属性をリストで所得

soup = BeautifulSoup.BeautifulSoup(html_src)
link = soup.find('link',attrs={'rel':'shortcut icon'})

print(link.attrs)
# [(u'rel', u'shortcut icon'), (u'type', u'image/x-icon'), (u'href', u'//www.google.com/images/icons/product/sites-16.ico')]


タグについてる特定の属性の所得

soup = BeautifulSoup.BeautifulSoup(html_src)
link = soup.find('link',attrs={'rel':'shortcut icon'})

icon_url = dict(link.attrs)['href']

print( icon_url )
# //www.google.com/images/icons/product/sites-16.ico