使用beautifulsoup从定义的文本中提取href

时间:2012-06-17 06:44:03

标签: python beautifulsoup

<form action="/2811457/follow?gsid=3_5bce9b871484d3af90c89f37" method="post">
<div>
<a href="/2811457/follow?page=2&amp;gsid=3_5bce9b871484d3af90c89f37">next_page</a>
&nbsp;<input name="mp" type="hidden" value="3" />
<input type="text" name="page" size="2" style='-wap-input-format: "*N"' />
<input type="submit" value="jump" />&nbsp;1/3
</div>
</form>

我搜索过STO,很多人都会问如何在标签之间提取文本 我想知道如何通过给出一个定义的文本来提取href。

在上面的html文件中,我想通过提供“next_page”文本来提取“/ 2811457 / follow?page = 2&amp; gsid = 3_5bce9b871484d3af90c89f37”。

我所做的就像:

  t = soup1.findAll(text=re.compile(r'next_page'))
  s = t.parent
  print s.nextSibling['href']

返回无

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

两次小修正。使用查找而不是 findAll 。而不是调用 nextSibling ,使用 get 方法查找 href 属性:

>>> from BeautifulSoup import BeautifulSoup
>>> import re
>>> page = '''\
<form action="/2811457/follow?gsid=3_5bce9b871484d3af90c89f37" method="post">
<div>
<a href="/2811457/follow?page=2&amp;gsid=3_5bce9b871484d3af90c89f37">next_page</a>
&nbsp;<input name="mp" type="hidden" value="3" />
<input type="text" name="page" size="2" style='-wap-input-format: "*N"' />
<input type="submit" value="jump" />&nbsp;1/3
</div>
</form>
'''
>>> soup = BeautifulSoup(page)
>>> soup.find(text=re.compile(r'next_page')).parent.get('href')
u'/2811457/follow?page=2&gsid=3_5bce9b871484d3af90c89f37'