YAMAGUCHI::weblog

噛み付き地蔵に憧れて、この神の世界にやってきました。マドンナみたいな男の子、コッペです。

pyqueryでほしい文字列だけ抜き出す

はじめに

こんにちは、Python界の情弱です。さて、今日ふと必要があってスクレイピングをしてたんですが、その時にうまいこと文字列を抜き出すのに苦労したんでメモ。

ソース

jQueryならcontents()とかでうまいことできるっぽいけど、pyqueryには残念ながらありません。そこで力技で必要ない要素を削除した後にtext()で返される文字列をsplitして決め打ちで文字列取ってくるという方法を採りました。なんかださいけどしょうがない。

from pyquery import PyQuery as pq

# この要素中の"piyo"だけ抜き出したい
html_str = "<div>hoge<span>foo</span><h3>bar</h3>piyo</div>"

html = pq(html_str)

# spanとh3を削除
html.remove('span')
html.remove('h3')

contents = pq(html).text().split() # これは "hoge piyo" を返すので空白でsplit
print contents[-1]