我学习Python的基础知识已经有一段时间了,我想我应该继续努力,试着把一些东西放在一起,但似乎遇到了一个绊脚石(尽管我到处寻找,看看哪里可能出错)
我想从这里抢一张桌子:https://www.oddschecker.com/horse-racing/2020-09-10-chelmsford-city/20:30/winner
现在我意识到,这个表并没有列出一个普通HTML的典型情况,因此,试图用Pandas来获取它不会产生结果。因此,我们深入研究了BeautifulSoup,试图获得一个结果
似乎我需要的所有数据都在类“diff row evTabRow bc”中,因此我编写了以下代码:
url = requests.get('https://www.oddschecker.com/horse-racing/2020-09-10-haydock/14:00/winner')
soup = BeautifulSoup(url.content, 'lxml')
table = soup.find_all("tr", class_="diff-row evTabRow bc")
这似乎把每匹马和我需要的所有相应数据都放到了一个列表中。在这个列表中,我只需要某些位,即马名的“数据名”和当前赔率的“数据odig”
我想可能有某种方法可以从列表中提取数据来构建列表列表,然后在Pandas中构建数据帧,但我可能在这方面做得完全错误
您要查找的数据都在行标记中<;tr>;在单元格标签中<;td>
问题在于,并非所有<;td>;'s是有用的,所以你必须跳过这些
这将为您提供您想要的:
如果是网页抓取,您可以采用将数据存储为各种变量的方法:
如何从HTML元素中选择数据取决于您(考虑选择
td
)您可以使用BeautifulSoup对象^{} 属性访问任何
<tr>
属性一旦你有了
table
,在每个条目上循环,取出你想要的属性作为一个dict列表。然后使用结果列表初始化数据帧注:
data-name
和data-odig
),所以我使用了具有类似名称的属性。我对赛马知之甚少,不知道这些是否有用,但这个答案中的方法应该允许您选择任何可用的属性李>相关问题 更多 >
编程相关推荐