私はBeautifulSoupを使用しています。 <div>
のようなIDを持つpost-#
タグへの参照を見つける必要があります。
例えば:
<div id="post-45">...</div>
<div id="post-334">...</div>
私が試してみました:
html = '<div id="post-45">...</div> <div id="post-334">...</div>'
soupHandler = BeautifulSoup(html)
print soupHandler.findAll('div', id='post-*')
どうすればこれをフィルタリングできますか?
関数を findAll に渡すことができます:
>>> print soupHandler.findAll('div', id=lambda x: x and x.startswith('post-'))
[<div id="post-45">...</div>, <div id="post-334">...</div>]
または正規表現:
>>> print soupHandler.findAll('div', id=re.compile('^post-'))
[<div id="post-45">...</div>, <div id="post-334">...</div>]
彼は「post-#somenumber#」と一致するように求めているので、正確に
import re
[...]
soupHandler.findAll('div', id=re.compile("^post-\d+"))
soupHandler.findAll('div', id=re.compile("^post-$"))
私には正しく見えます。
これは私のために働きます:
from bs4 import BeautifulSoup
import re
html = '<div id="post-45">...</div> <div id="post-334">...</div>'
soupHandler = BeautifulSoup(html)
for match in soupHandler.find_all('div', id=re.compile("post-")):
print match.get('id')
>>>
post-45
post-334