web数据的读取和存储
互联网时代,网络上每天都会产生大量的数据,如何从这些非结构化的数据中提取有效的信息进行分析尤为重要。
1.读取HTML表格
对于HTML网页中的表格数据,使用pandas中的read_html函数就可以获取。
例:湖人球队名单
实例链接:http://nba.sports.163.com/team/1000000027/structure/
这里获取HTML表格中的数据。
import pandas as pd
data=pd.read_html('http://nba.sports.163.com/team/1000000027/structure/')
print(data[0])
[ 号码 球员姓名 位置 身高 体重 年龄 生涯 毕业大学
0 88 马基夫-莫里斯 大前锋 2.03m 111kg 30 0年 Kansas
1 10 贾里德-杜德利 小前锋 1.98m 107kg 34 0年 Boston College
2 23 勒布朗-詹姆斯 控球后卫 2.06m 113kg 35 0年 NaN
3 7 贾维尔-麦基 中锋 2.13m 122kg 32 0年 Nevada
4 14 丹尼-格林 得分后卫 1.98m 97kg 32 0年 North Carolina
5 0 凯尔-库兹马 大前锋 2.06m 100kg 24 0年 Utah
6 30 特洛伊-丹尼尔斯 得分后卫 1.93m 90kg 28 0年 VCU
7 4 亚历克斯-卡鲁索 控球后卫 1.96m 84kg 26 0年 Texas A&M
8 28 奎因-库克 控球后卫 1.85m 81kg 27 0年 Duke
9 9 拉简-隆多 控球后卫 1.85m 81kg 34 0年 Kentucky
10 39 德怀特-霍华德 中锋 2.08m 120kg 34 0年 NaN
11 5 塔伦霍顿-塔克 得分后卫 1.93m 106kg 19 0年 Iowa State
12 11 埃弗里-布拉德利 得分后卫 1.90m 81kg 29 0年 Texas
13 21 扎克-诺维尔 得分后卫 1.96m 92kg 22 0年 Gonzaga
14 15 德马库斯-考辛斯 中锋 2.08m 122kg 29 0年 Kentucky
15 1 肯塔维奥斯-卡德维尔-波普 得分后卫 1.96m 92kg 27 0年 Georgia
16 37 科斯塔斯-阿德托昆博 大前锋 2.08m 90kg 22 0年 Dayton
17 3 安东尼-戴维斯 大前锋 2.08m 114kg 27 0年 Kentucky
18 18 迪昂-韦特斯 得分后卫 1.90m 97kg 28 0年 Syracuse
19 12 德文泰-卡考克 大前锋 2.01m 108kg 23 0年 UNC Wilmington]
返回的结果为列表结构,每一个元素相当于一个表格数据。
2.并不是所有的网络数据都存储在HTML表格中,这就需要网络爬虫来实现获取网络数据了。实例:爬取酷狗音乐排行榜
https://www.kugou.com/yy/rank/home/1-8888.html
import requests
from pandas import DataFrame
from IPython.display import display
from bs4 import BeautifulSoup
data=[]
wb_data=requests.get('https://www.kugou.com/yy/rank/home/1-8888.html')
soup=BeautifulSoup(wb_data.text,'lxml')
ranks=soup.select('span.pc_temp_num')
titles=soup.select('div.pc_temp_songlist>ul>li>a')
times=soup.select('span.pc_temp_tips_r>span')
for rank,title,time in zip(ranks,titles,times):
a={
'排行':rank.get_text().strip(),
'歌手':title.get_text().split('-')[0],
'歌曲':title.get_text().split('-')[1],
'时长':time.get_text().strip()
}
data.append(a)
data
df=DataFrame(data)
display(df)