使用BeautifulSoup解析HTML时遇到问题

时间:2014-02-05 06:38:08

标签: python html parsing beautifulsoup

我在使用beautifulsoup解析一些html时遇到问题。

例如,在这篇HTML中,我想提取目标文本。 HTML代码中的更多HTML是这样的,所以我想提取所有目标文本。我还想提取“tt0082971”并将该数字和目标文本放在制表符分隔文件的两行中。 'tt'之后的数字会针对目标文本的每个实例进行更改。

<td class="target">
      <span class="wlb_wrapper" data-caller-name="search" data-size="small" data-tconst="tt0082971">
      </span>
      <a href="/target/tt0082971/">
       Target Text 1
      </a>

1 个答案:

答案 0 :(得分:0)

BeautifulSoup.select接受CSS Selectors

>>> from bs4 import BeautifulSoup
>>>
>>> html = '''
... <td class="target">
...       <span class="wlb_wrapper" data-caller-name="search" data-size="small" data-tconst="tt0082971">
...       </span>
...       <a href="/target/tt0082971/">
...        Target Text 1
...       </a>
...       </td>
... '''
>>> soup = BeautifulSoup(html)
>>> for td in soup.select('td.target'):
...     span = td.select('span.wlb_wrapper')
...     if span:
...         print span[0].get('data-tconst') # To get `tt0082971`
...     print td.a.text.strip() # To get target text
...
tt0082971
Target Text 1