首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数据分析学习笔记-数据准备之数据来源

如何获取数据呢?方法比较多,先介绍两种,一种是从外部导入,一种通过Python爬虫得来。

一、从外部导入

步骤一:在数据选项中选择“导入数据”,打开;

步骤二:数据源选择“直接打开数据文件”--“选择数据源”,打开选择文件数据框,选择文件;

步骤三:选择“Windows(默认)”,点击“下一步”;

步骤四:下一步;

步骤五:选择“逗号”,预览,选择下一步;

步骤六:设置每列的数据类型,点完成。

步骤七:导入到Excel中的数据如下图所示。

简单到爆的数据采集方法。。。。。。问题是文本中的数据从哪儿来?

二、Python爬虫

本例子为使用Python来爬取豆瓣排名前250名的电影基本信息。

代码如下:

#!/usr/bin/envpython

#encoding=utf-8

importrequests

importre

importcodecs

frombs4importBeautifulSoup

fromopenpyxlimportWorkbook

wb=Workbook()

dest_filename='电影.xlsx'

ws1=wb.active

ws1.title="电影top250"

DOWNLOAD_URL='https://movie.douban.com/top250/'

defdownload_page(url):

"""获取url地址页面内容"""

headers={'User-Agent':'Mozilla/5.0(Macintosh;IntelMacOSX10_11_2)AppleWebKit/537.36(KHTML,likeGecko)Chrome/47.0.2526.80Safari/537.36'}

data=requests.get(url,headers=headers).content

returndata

defget_li(doc):

soup=BeautifulSoup(doc,'html.parser')

ol=soup.find('ol',class_='grid_view')

name=[]#名字

star_con=[]#评价人数

score=[]#评分

info_list=[]#短评

foriinol.find_all('li'):

detail=i.find('div',attrs={'class':'hd'})

movie_name=detail.find(

'span',attrs={'class':'title'}).get_text()#电影名字

level_star=i.find(

'span',attrs={'class':'rating_num'}).get_text()#评分

star=i.find('div',attrs={'class':'star'})

star_num=star.find(text=re.compile('评价'))#评价

info=i.find('span',attrs={'class':'inq'})#短评

ifinfo:#判断是否有短评

info_list.append(info.get_text())

else:

info_list.append('无')

score.append(level_star)

name.append(movie_name)

star_con.append(star_num)

page=soup.find('span',attrs={'class':'next'}).find('a')#获取下一页

ifpage:

returnname,star_con,score,info_list,DOWNLOAD_URL+page['href']

returnname,star_con,score,info_list,None

defmain():

url=DOWNLOAD_URL

name=[]

star_con=[]

score=[]

info=[]

whileurl:

doc=download_page(url)

movie,star,level_num,info_list,url=get_li(doc)

name=name+movie

star_con=star_con+star

score=score+level_num

info=info+info_list

for(i,m,o,p)inzip(name,star_con,score,info):

col_A='A%s'%(name.index(i)+1)

col_B='B%s'%(name.index(i)+1)

col_C='C%s'%(name.index(i)+1)

col_D='D%s'%(name.index(i)+1)

ws1[col_A]=i

ws1[col_B]=m

ws1[col_C]=o

ws1[col_D]=p

wb.save(filename=dest_filename)

if__name__=='__main__':

main()

运行代码

打开生成的Excel表格,查看爬取的数据

打开豆瓣电影,查看网站的数据和爬取的数据是否一致

牛逼的Python爬虫,后边慢慢研究~

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180313G08NY200?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券