在python +漂亮的汤上使用正则表达式

时间:2014-05-23 23:12:52

标签: python parsing

我有一个像这样的html页面:

<td class="subject windowbg2">
 <div>
  <span id="msg_152617">
   <a href= SOME INFO THAT I WANT </a>
  </span>
 </div>
 <div>
  <span id="msg_465412">
   <a href= SOME INFO THAT I WANT</a>
  </span>
 </div>

你可以看到id =&#34; msg_465412&#34;有一个可变数字,所以这是我的代码:

import urllib.request, http.cookiejar,re
from bs4 import BeautifulSoup

contenturl = "http://megahd.me/peliculas-microhd/"
htmll=urllib.request.urlopen(contenturl).read()
soup = BeautifulSoup(htmll)

print (soup.find('span', attrs=re.compile(r"{'id': 'msg_\d{6}'}")))

在最后一行我试图找到所有&#34; span&#34;包含可以是msg _ ######(带任意数字)的id的标签,但我的代码中出现了错误,但它找不到任何内容。

P.S:我想要的所有代码都在一个包含6列的表中,我想要所有行的第三列,但我认为使用正则表达式更容易

2 个答案:

答案 0 :(得分:3)

你的attrs参数有点混淆......目前它是一个包含字典字符串表示的正则表达式,当它需要是一个包含你正在搜索的属性的字典时为了它的价值和正则表达式。

这应该有效:

print (soup.find('span', attrs={'id': re.compile(r"msg_\d{6}")}))

答案 1 :(得分:1)

尝试使用以下内容:

soup.find_all("span" id=re.compile("msg_\d{6}"))