提问人:ezeagwulae 提问时间:12/8/2017 更新时间:12/8/2017 访问量:1228
使用 BeautifulSoup 将数据从 dataframe 中抓取到 dataframe 中
scrape data from into dataframe with BeautifulSoup
问:
我正在做一个项目,将加州彩票中的数据抓取并解析成一个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)
预期输出:我很想把表格行刮成dataframe
draw_date | numbers | mega
-----------|----------------|-----
12/06/2017 | 12 24 07 01 02 | 23
12/02/2017 | 33 18 07 42 40 | 7
感谢您对正确方向的任何修改或帮助。
答:
1赞
t.m.adam
12/8/2017
#1
此表达式不选择任何内容,因为该表没有“tag_even_numbers”类,但具有“tag_even”类和“numbers”类。"table.tag_even_numbers tr"
因此,如果您更改此设置:
soup.select("table.tag_even_numbers tr")
自:
soup.select("table.tag_even.numbers tr")
您应该有 20 个项目。drawing_list
此外,通过使用 选择,您可以获得在字符串中并排连接的所有数字。
如果您想要一个数字列表,您应该改用,例如:.text
numbers
.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]
评论
0赞
ezeagwulae
12/8/2017
多谢。它的建议为我节省了拆分字符串的额外步骤。超级乐于助人。关于推入 DataFrame 的任何建议?stripped_strings
上一个:带有正则表达式的自定义 HTMLParser 未正确返回
下一个:从以下网站解析表
评论