使用BeautifulSoup从标记中获取价值

时间:2017-03-08 03:04:21

标签: python beautifulsoup

我正在尝试使用BeautifulSoup从维基百科的信息框中抓取电影信息。我在抓取电影预算方面遇到了麻烦,如下所示。

例如,我想从信息框中剔除“2500万美元”的预算值。鉴于thtd标记都不是唯一的,我如何获得预算值? (参见HTML示例)。

说我有值tag = soup.find('th') <th scope="row" style="white-space:nowrap;padding-right:0.65em;">Budget</th> - 如何从tag获得“2500万美元”的价值?

我以为我可以做tag.tdtag.text这样的事情,但这些都不适合我。

我是否必须遍历所有标签并检查其文本是否等于“预算”,如果是,请获取以下单元格?

示例HTML代码:

<tr>
<th scope="row" style="white-space:nowrap;padding-right:0.65em;">Budget</th>
<td style="line-height:1.3em;">$25 million<sup id="cite_ref-2" class="reference"><a href="#cite_note-2">[2]</a></sup></td>
</tr>
<tr>
<th scope="row" style="white-space:nowrap;padding-right:0.65em;">Box office</th>
<td style="line-height:1.3em;">$65.7 million<sup id="cite_ref-BOM_3-0" class="reference"><a href="#cite_note-BOM-3">[3]</a></sup></td>
</tr>

4 个答案:

答案 0 :(得分:2)

您可以首先找到标记为td且标记为Budget的节点,然后找到其下一个兄弟td并从节点获取文本:

soup.find("th", text="Budget").find_next_sibling("td").get_text()
# u'$25 million[2]'

答案 1 :(得分:0)

要获取<td>代码中的每个金额,您应该使用

tags = soup.findAll('td')

然后

for tag in tags:
    print tag.get_text() # To get the text i.e. '$25 million' 

答案 2 :(得分:0)

您需要的是BeatifulSoup中的find_all()方法。

例如:

    tdTags = soup.find_all('td',{'class':'reference'})

这意味着当class ='reference'时,你会找到所有'td'标签。

  

只要在预期的td标签中找到唯一属性,就可以找到所需的任何td标签。

然后你可以做一个for循环来找到内容,就像@Bijoy说的那样。

答案 3 :(得分:0)

另一种可能的方式可能是:

application.cfc