项目作业
项目作业 759
等72人参与

亲爱的同学们,经过本阶段的学习,相信大家已掌握编写简单爬虫的相关知识,现在让我们亲自动手运用所学知识来完成下面的作业吧!

题目要求:

根据所学知识,动手实践抓取豆瓣电影TOP250中前250条经典电影的相关信息,结合浏览器的开发者模式分析目标站点URL结构、规律和目标抓取数据的网页结构、定位等,运用xpath和正则表达式实现数据提取和封装,最后将数据保存至MongoDB数据库。
数据抓取过程中应当注意以下三点:
(1)目标站点首页url: https://movie.douban.com/top250
(2)抓取的目标信息包含项如下:电影名称信息(movie_name)、电影演职人员信 息(actors_information)、电影评分数值(score)、评价数信息(evaluate)、电影简 述信息(describe)、来源URL信息(from_url)
(3)编码时请运用面向对象思想及封装特性优化代码结构

运行效果:

图片描述

作业描述

一、语言和环境

  1. 版本
    Python3.6或Python3.6以上版本
  2. 开发工具
    Pycharm

二、程序整体要求

1、 划分功能模块,根据题目要求设置不同的类,在类中实现相应功能的管理。
2、 类的标识要清楚易懂,代码结构要层次分明,代码编辑思路要清晰、整洁。
3、 要求Python代码书写、命名符合规范,在代码中添加必要的注释
4、 最终抓取数据效果与提供的页面效果图、结构 保持一致,文字大小、背景色也不做统一要求
5、 将作业项目形成压缩文件并提交

三、思路分析

由题目要求和运行效果,可以分析出项目中可以抽取两大模块: crawl_douban_movie_info_top250.py爬虫文件和handle_mongo.py存储数据文 件

前者主要实现网络爬虫中的数据抓取与解析的业务逻辑:

  • 爬虫类(HandleDoubanMovieTop250,继承自object):

    <1>设定初始化方法,并设置实例变量header、page_url(list类型)分别记录爬虫的请求头和目标抓取页的url
    <2>设定实例方法handle_page_url(),将构造好的目标页URL存储于记录目标抓取页url的列表中
    <3>设定实例方法handle_request(),传递目标页url参数,发送爬虫请求, 返回爬取的文本类型数据
    <4>设定实例方法handle_page_detail(),传递目标页url参数,解析当前页的返回数据,通过xpath和正则表达式解析题目要求第2项中需要抓取的目标信息,并调用数据存储类实例douban_mongo进行数据存储
    <5>设定实例方法run(),通过线程池方式启动爬虫

  • 设置程序入口函数main(),创建HandleDoubanMovieTop250类的实例douban,并启动爬虫

  • 调用程序入口函数以运行程序

后者主要完成相应的数据存储,最终数据存储如效果图所示:

  • 数据存储类(Handle_Mongo,继承自object):

    <1>自定义初始化方法,连接MongoDB并创建名为douban的数据库
    <2>自定义实例方法handle_save_data()实现数据存储,接收item(dict类型)参数,定义表名如douban_data,通过insert方法插入最终数据

  • 创建Handle_Mongo类的实例,命名为douban_mongo

注:关于线程池基本用法请参考如下代码:
图片描述

评分标准是什么?

1.规范【10分】

(1)作业所涉及的类都封装在独立的 ".py"文件中
(2)类的定义、类的成员变量命名规范 代码结构要层次分明
(3)Python代码规范整洁并添加适量注释

2.程序整体运行效果【10分】

程序正常运行效果,且满足效果图要求

3.爬虫项目分析【30分】

(1)正确的使用浏览器的开发者模式,提取出请求头
(2)正确查找、分析出页码页的生成规则

4.爬虫文件【40分】

(1)成功请求豆瓣电影页码页
(2)正确的使用xpath和正则表达式
(3)正确的利用线程池加快抓取速度
(4)正确的解析题目中要求的字段

5.数据存储文件【10分】

能够调用pymongo模块,最终实现数据入库

项目作业上传说明
第1步:上传你的作业压缩包
第2步:等待讲师一对一批复
第3步:查看讲师点评
上传作业

登录后查看更多作业,立即

意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师