gpt4 book ai didi

python - 如何在 Python 中循环访问 html-table-dataset

转载 作者:太空狗 更新时间:2023-10-30 00:57:48 29 4
gpt4 key购买 nike

我是第一次在这里尝试学习一些 Python 技能;请善待我:-)

虽然我对编程概念并不完全陌生(我以前一直在弄乱 PHP),但事实证明,向 Python 的过渡对我来说有些困难。我想这主要是因为我最缺乏——如果不是全部——对常见“设计模式”(?)等的基本理解。

话虽如此,这就是问题所在。我当前项目的一部分涉及使用 Beautiful Soup 编写一个简单的爬虫。要处理的数据的结构与下面列出的数据有些相似。

<table>
<tr>
<td class="date">2011-01-01</td>
</tr>
<tr class="item">
<td class="headline">Headline</td>
<td class="link"><a href="#">Link</a></td>
</tr>
<tr class="item">
<td class="headline">Headline</td>
<td class="link"><a href="#">Link</a></td>
</tr>
<tr>
<td class="date">2011-01-02</td>
</tr>
<tr class="item">
<td class="headline">Headline</td>
<td class="link"><a href="#">Link</a></td>
</tr>
<tr class="item">
<td class="headline">Headline</td>
<td class="link"><a href="#">Link</a></td>
</tr>
</table>

主要问题是我根本无法理解如何 1) 跟踪当前日期 (tr->td class="date") 而 2) 遍历后续 tr 中的项目: s (tr class="item"->td class="headline"and tr class="item"->td class="link") 和 3) 将处理后的数据存储在一个数组中。

此外,所有数据都将被插入数据库,其中每个条目必须包含以下信息;

  • 日期
  • 标题
  • 链接

请注意,crud:ing 数据库不是问题的一部分,我提到这一点只是为了更好地说明我在这里要完成的工作:-)

现在,有许多不同的方法可以给猫剥皮。因此,虽然手头问题的解决方案确实非常受欢迎,但如果有人愿意详细说明您将用来“攻击”此类问题的实际逻辑和策略,我将不胜感激:-)

最后但并非最不重要的一点,对于这样一个愚蠢的问题感到抱歉。

最佳答案

基本问题是这个表是为外观标记的,而不是为语义结构标记的。如果做得好,每个日期及其相关项都应该共享一个父项。不幸的是,他们没有,所以我们不得不凑合。

基本策略是遍历表中的每一行

  • 如果第一个表数据有类 'date',我们获取日期值并更新 last_seen_date
  • 否则,我们会提取标题和链接,然后将 (last_seen_date, headline, link) 保存到数据库

.

import BeautifulSoup

fname = r'c:\mydir\beautifulSoup.html'
soup = BeautifulSoup.BeautifulSoup(open(fname, 'r'))

items = []
last_seen_date = None
for el in soup.findAll('tr'):
daterow = el.find('td', {'class':'date'})
if daterow is None: # not a date - get headline and link
headline = el.find('td', {'class':'headline'}).text
link = el.find('a').get('href')
items.append((last_seen_date, headline, link))
else: # get new date
last_seen_date = daterow.text

关于python - 如何在 Python 中循环访问 html-table-dataset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4622117/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com