爬取360图解电影
原创
目的:使用Scrapy爬取360图解电影,保存至MONGODB数据库,并将图集按电影名称分类保存至本地
目标网址:http://image.so.com/z?ch=video
分析/知识点:
- 爬取难度:
a. 入门级,电影索引页/详情页都是返回json数据结果;
b. 图片分类保存:需要对内置ImagesPipeline进行继承后改写几个方法;
实际步骤:
- 创建Scrapy项目/tujiemovie360(spider)
Terminal: > scrapy startproject tujiemovie360
Terminal: > scrapy genspider tujiemovie image.so.com/z?ch=video
- 配置settings.py文件
# MONGODB配置
MONGO_URI = 'localhost'
MONGO_DB = 'maoyan_movie'
# 图集保存默认路径
IMAGES_STORE = './movies/'
# 不遵守爬取机器人协议
ROBOTSTXT_OBEY = False
# 设置headers
DEFAULT_REQUEST_HEADERS = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en',
}
# 启用ImagePipeline/MongoPipeline
ITEM_PIPELINES = {
'tujiemovie360.pipelines.ImagePipeline': 300,
'tujiemovie360.pipelines.MongoPipeline': 301,
}
- 编写items.py文件
注:此处创建了电影图集索引Item/详情页Item
# 图集IndexItem
class IndexItem(Item):
id = Field() # 电影图集id,重要
actor = Field() # 演员
director = Field() # 导演
group_title = Field() # 电影名称
total_count = Field() # 电影图集图片总数
# 图集DetailItem
class Det