同学A负责爬取数据存在Exel。详细如下:
1.导入会用到的库,先用win+r输入cmd,用pip工具下载库文件。导入库文件在pycharm的setting->project->Python Interpreter里面选择添加库。
2.定义scraping函数,用来爬取网页上的数据。headers为请求头,用来访问猫眼电影网站。board_urls里面的网站,用了format格式化的方法用来实现动态爬取网页,爬取第一页的所有电影,爬取第二页的所有电影,直到爬取完一百个电影的数据。
3.定义一个空列表用来存网页上所爬取到的数据,用etree.HTML来解析网页的数据存放在board_url_html里面。
4.数据处理,定义空列表来存放各个电影每个属性所对应的数据。其中star_org和relastime_org是用来存放还没有处理的数据,因为爬取到的数据中含有“主演:”、“上映时间:”我用字符串的切片方法或者replace方法处理好数据后再存放进movie_star和releastime这两个列表中,此时数据只剩下了演员的名字和上映的时间。
用xpath找到爬取数据的位置,用extend一次性的追加写入到之前定义的空列表中,实现了数据的写入。在用一个data列表整合所有爬取到的数据,并将数据参数返回。
5.定义build_excel_file函数用来保存爬取到的数据,将刚才返回的data其中包含了所有电影的信息。用xlwt.Workbook建立一个book对象,book此时就是一个Excel文件。将它的标题设置为想要的名字入“封面链接”、“电影链接”..。将data里面的数据一行一行的写入到EXCEL文件里面,细节是内层循环是j来控制列,外层循环是i来控制行。用len(title)这种方式来写,可以方便后期扩充EXCEL表的列表名。假如我要爬取该电影的评论数,我可以直接在title的’评分’后面直接加入’评论数’,此时用len(title)会自动加一行,方便扩容。
6.主函数的流程,通过调用上述函数来实现功能。用print里面的文字可以判断程序执行到那一步了,方便进行调试。
- 爬取数据效果:
同学B负责数据分析和展示,详细如下:
1.导入会用到的库,先用win+r输入cmd,用pip工具下载库文件。导入库文件在pycharm的setting->project->Python Interpreter里面选择添加库。
2.条形图:用pandas库的pd.read_excel按照名字读取EXCEL里面的值到data里。data.sort_values,在data里的数据按照值来排序head(i),其中i来控制排序的个数。bar生成对象,将电影名称的值转换成列表的形式输出到条形图的上面。bar.render设置保存路径。print用来检查该代码段是否执行成功。
3.玫瑰图(饼图):data里的数据按照评分排序后存放在sctor_chart里,color_series设置颜色的系列,其中有十个值对应了排名的前十个电影。实例化Pie类pie1.add添加两个列表的值到玫瑰图里。代码中含有各配置的含义,radius代表半径,center代表圆心,title是该玫瑰图的标题。pie1.render设置保存路径。print用来检查该代码段是否执行成功。
4.词云:首先要用pip工具下载wordcloud库和numpy库,然后再pycharm里面导入库实现应用。同样的,将data.sort_values,在data里的数据按照值来排序head(i),其中i来控制排序的个数。将排序好的值存放在实例化对象w1中,设置宽度、高度、背景颜色、字体的路径。用.join链接排名前十的电影名称,中间用换行符间隔,将链接好的值存放在txt里面。w1.generate(txt),对象w1生成txt里面值的词云,w1.to_file设置保存路径。print用来检查该代码段是否执行成功。
效果如下: