gpt4 book ai didi

python - 使用 BeautifulSoup 将数据抓取到数据框中

转载 作者:太空宇宙 更新时间:2023-11-03 14:24:56 25 4
gpt4 key购买 nike

我正在开发一个项目,将加州彩票的数据抓取并解析为 dataframe

到目前为止,这是我的代码,它没有产生错误也没有输出:

import requests
from bs4 import BeautifulSoup as bs4

draw = 'http://www.calottery.com/play/draw-games/superlotto-plus/winning-numbers/?page=1'
page = requests.get(draw)
soup = bs4(page.text)

drawing_list = []

for table_row in soup.select("table.tag_even_numbers tr"):
cells = table_row.findAll('td')

if len(cells) > 0:
draw_date = cells[0].text.strip()
numbers = cells[1].text.strip()
mega = cells[2].text.strip()

drawings = {'dates': draw_date, 'winning_numbers': numbers, 'mega_number': mega}
drawing_list.append(drawings)
print "added {0} {1} {2}, to the list".format(draw_date, numbers, mega)

预期输出:我希望将表行抓取到数据框

draw_date  | numbers        | mega
-----------|----------------|-----
12/06/2017 | 12 24 07 01 02 | 23
12/02/2017 | 33 18 07 42 40 | 7

感谢您对正确方向的任何修改或帮助。

最佳答案

此表达式“table.tag_even_numbers tr”不选择任何内容,因为该表没有“tag_even_numbers”类,但具有“tag_even”类和“numbers”类。

所以如果你改变这个:

soup.select("table.tag_even_numbers tr")  

至:

soup.select("table.tag_even.numbers tr")

drawing_list 中应该有 20 个项目。

此外,通过使用.text选择数字,您可以将所有数字并排连接在一个字符串中。
如果您想要一个数字列表,您应该使用 .stripped_strings 代替,例如:

numbers = list(cells[1].stripped_strings)

然后您可以从drawing_list创建一个数据框,例如:

df = pd.DataFrame(drawing_list)
print(df.head())
<小时/>
                 dates mega_number       winning_numbers
0 Dec 6, 2017 - 3201 23 [12, 24, 07, 01, 02]
1 Dec 2, 2017 - 3200 7 [33, 18, 07, 42, 40]
2 Nov 29, 2017 - 3199 6 [03, 33, 26, 27, 07]
3 Nov 25, 2017 - 3198 19 [21, 46, 13, 25, 17]
4 Nov 22, 2017 - 3197 3 [32, 40, 27, 42, 08]

关于python - 使用 BeautifulSoup 将数据抓取到数据框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47708122/

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