如何获取数据呢?方法比较多,先介绍两种,一种是从外部导入,一种通过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爬虫,后边慢慢研究~
领取专属 10元无门槛券
私享最新 技术干货