将逗号分隔的列表与beautifulsoup中的链接分开

rjm*_*nro 2 python beautifulsoup html-parsing

我在HTML文档的表格单元格中有一个以逗号分隔的列表,但列表中的某些项目是链接的:

<table>
  <tr>
    <td>Names</td>
    <td>Fred, John, Barry, <a href="http://www.example.com/">Roger</a>, James</td>
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

我一直在使用漂亮的汤来解析html,我可以进入表格,但是分割它并返回大致相似的数据结构的最佳方法是:

[
  {'name':'Fred'},
  {'name':'John'},
  {'name':'Barry'},
  {'name':'Roger', 'url':'http://www.example.com/'},
  {'name':'James'},
]
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 10

这是你可以做到的一种方式:

import BeautifulSoup

soup = BeautifulSoup.BeautifulSoup('''<table>
  <tr>
    <td>Names</td>
    <td>Fred, John, Barry, <a href="http://www.example.com/">Roger</a>, James</td>
  </tr>
</table>''')

result = []
for tag in soup.table.findAll('td')[1]:
  if isinstance(tag, BeautifulSoup.NavigableString):
    for name in tag.string.split(','):
      name = name.strip()
      if name:
        result.append({ 'name': name })
  else:
    result.append({ 'name': tag.string.strip(), 'url': tag["href"] })

print result
Run Code Online (Sandbox Code Playgroud)