提问者:小点点

如何使用Python Beautiful Soup通过特定的href查找同级HTML表元素


使用Beautiful Soup,我试图从HTML表中清除数据,这些表看起来如下:

<table class="ipl-zebra-list ipl-zebra-list--fixed-first release-dates-table-test-only">
  <tr class="ipl-zebra-list__item release-date-item">
   <td class="release-date-item__country-name"><a href="/calendar/?region=de">Germany
   </a></td>
   <td align="right" class="release-date-item__date">15 September 2017</td> <td align="left" class="release-date-item__attributes">(Oldenburg Film Festival)
   </td>
  </tr>
  <tr class="ipl-zebra-list__item release-date-item">
    <td class="release-date-item__country-name"><a href="/calendar/?region=gb">UK
    </a></td>
    <td align="right" class="release-date-item__date">23 March 2018</td> <td class="release-date-item__attributes--empty"></td>
 </tr>
</table>

我正在查找出现在元素的同级元素中的日期,该元素包括以下href:

<a href="/calendar/?region=gb">UK

在上面的例子中,这是2018年3月23号,但是对于出现href的每个实例,日期都是不同的。 但是,href总是相同的。

总之,我正在寻找出现在上面列出的href的相邻单元格中的数据。

谢啦!


共1个答案

匿名用户

因此,如果您希望将国家名称和日期链接到该国家名称,您可以创建一个字典,如下所示:

html = '''<table class="ipl-zebra-list ipl-zebra-list--fixed-first release-dates-table-test-only">
  <tr class="ipl-zebra-list__item release-date-item">
   <td class="release-date-item__country-name"><a href="/calendar/?region=de">Germany
   </a></td>
   <td align="right" class="release-date-item__date">15 September 2017</td> <td align="left" class="release-date-item__attributes">(Oldenburg Film Festival)
   </td>
  </tr>
  <tr class="ipl-zebra-list__item release-date-item">
    <td class="release-date-item__country-name"><a href="/calendar/?region=gb">UK
    </a></td>
    <td align="right" class="release-date-item__date">23 March 2018</td> <td class="release-date-item__attributes--empty"></td>
 </tr>
</table>'''


html_code = BeautifulSoup(html, 'html.parser')

countries = html_code.find_all('td', class_='release-date-item__country-name')
dates = html_code.find_all('td', class_='release-date-item__date')

dates_as_dic = {}
for i in range(len(dates)):
    dates_as_dic[countries[i].text.strip()] = dates[i].text

print(dates_as_dic)

输出:

{'Germany': '15 September 2017', 'UK': '23 March 2018'}

相关问题