放弃谁都可以,千万不要放弃自己!
采集豆瓣热门电影的基本信息,导演、编剧、主演、上映时间等并将数据存入MySql中。
该项目中使用的开发环境:
python3.6
scrapy1.5
mysql5.7
scrapy三部曲Item、spider、pipelines,下面我们依次来编写者三个模块的代码。
Item
item中主要定义要采集的字段,我们主要采集电影标题、导演、编剧、主演等字段,具体字段如下:
Pipelines
pipelines管道主要用来初始化数据库的连接和相关数据可的操作。所以我们将涉及数据库的操作都放在这里进行,项目中pipelines的代码如下:
spider
spider是scrapy的核心部分,在该项目中应用了scrapy提供的表单模拟登录功能进行登录,在不登录的情况下,有可能会被系统检测到非法操作,从而禁止你的IP访问。经过我对豆瓣热门电影的分析,在列表页利用的是js渲染数据,详情页则没有使用js渲染,故获取列表页是,我们从js中获取数据,利用json.loads将数据转换成json数据,便于数据的提取,详情页利用scrapy提供的xpath解析数据。spider代码如下:
最后
运行结果就不在这里贴出来了,项目github地址豆瓣电影,需要注意的一个地方,需要将Setting中的ROBOTSTXT_OBEY设置为False,js获取电影列表数据是好像设置了不让爬取。