Python でlxml
ライブラリを使用できます。
#!/usr/bin/env python
import urllib2
from lxml import html # $ apt-get install python-lxml or $ pip install lxml
page = urllib2.urlopen('http://stackoverflow.com/q/11939631')
doc = html.parse(page).getroot()
div = doc.get_element_by_id('question')
for tr in div.find('table').iterchildren('tr'):
for td in tr.iterchildren('td'):
print(td.text_content()) # process td
jQuery に精通している場合。pyqueryを使用できます。lxml の上に jQuery インターフェイスを追加します。
#!/usr/bin/env python
from pyquery import PyQuery # $ apt-get install python-pyquery or
# $ pip install pyquery
# d is like the $ in jquery
d = PyQuery(url='http://stackoverflow.com/q/11939631', parser='html')
for tr in d("#question table > tr"):
for td in tr.iterchildren('td'):
print(td.text_content())
ただし、この場合pyquery
は十分に追加されません。only を使用した場合と同じですlxml
:
#!/usr/bin/env python
import urllib2
from lxml import html
page = urllib2.urlopen('http://stackoverflow.com/q/11939631')
doc = html.parse(page).getroot()
for tr in doc.cssselect('#question table > tr'):
for td in tr.iterchildren('td'):
print(td.text_content()) # process td
注: 最後の 2 つの例では、要素内のすべてのテーブル (最初のテーブルだけでなく) の行を列挙しています。#question