人和人刚认识的时候,虚伪又热情,新鲜又浪漫。即使生活再不好,也要爱自己,比如多看点电影,一起感悟下人生也是蛮好的,本次小编就来试着爬取了豆瓣电影Top 250来小试牛刀,快跟着小编一起探索吧,不喜勿喷哦~

1、创建Scrapy项目

创建一个新项目,用于爬取豆瓣电影排行榜

命令:

scrapy startproject DoubanMovies

截图:

创建完后使用Pycharm打开创建的新项目

2、创建Scrapy程序

使用命令创建一个scrapy程序,名字随你就好,毕竟只是一个程序名而已

命令:

scrapy genspider douban douban.com

截图:

3、配置数据库等信息

在settings.py里面设置你要保存的数据库信息

BOT_NAME = 'DoubanMovies'SPIDER_MODULES = ['DoubanMovies.spiders']
NEWSPIDER_MODULE = 'DoubanMovies.spiders'# Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36 Edg/86.0.622.69'# Obey robots.txt rules
ROBOTSTXT_OBEY = True#HTTPERROR_ALLOWED_CODES = [400]#上面报的是403,就把403加入。# MONGODB地址
MONGODB_HOST = '127.0.0.1'
# 端口号,默认27017
MONGODB_PORT = 27017
# 设置数据库名称
MONGODB_DBNAME = 'Douban'
# 设置集合名称
MONGODB_COL = 'movies'
ITEM_PIPELINES = {'DoubanMovies.pipelines.DoubanmoviesPipeline': 300,
}

在pipelines.py里面设置数据管道,这里小编封装了一层,数据库和集合的名字可以在程序中传递过来

from pymongo import MongoClientfrom DoubanMovies import settingsclass DoubanmoviesPipeline:def __init__(self):# 获取setting中主机名,端口号和集合名host = settings.MONGODB_HOSTport = settings.MONGODB_PORT# dbname = settings.MONGODB_DBNAME# col = settings.MONGODB_COL# 创建一个mongo实例client = MongoClient(host=host, port=port)# 访问数据库# db = client[dbname]# 访问集合# self.col = db[col]# 访问数据连接器self.client = clientdef process_item(self, item, spider):data = dict(item)my_dbname = spider.dbname #自定义的数据库名--来自scrapy程序里面的dbnamemy_col = spider.col #自定义的集合名--来自scrapy程序里面的colself.client[my_dbname][my_col].insert(data)# self.col.insert(data)return item

然后打开目标网站:豆瓣电影 Top 250 (douban.com),然后分析网站结构,比如需要爬取电影名字,排名,导演以及主演等信息

打开F12,对你想要爬取的元素,可以复制其对应的xpath路径,爬取数据的时候会用到

分析完目标网站后,在items.py里面定义想要爬取的字段

#用于保存电影数据的item
class DoubanMovieItem(scrapy.Item):movie_name = scrapy.Field()  # 电影名字rank = scrapy.Field()  # 电影排名actors = scrapy.Field() #导演以及主演year = scrapy.Field() #上映年份area = scrapy.Field() #地域type = scrapy.Field() #类型rating_num = scrapy.Field() #评分short_comment = scrapy.Field() #短评

4、编写爬取程序

上面的数据库配置以及item设置好之后,开始编写爬取程序,注意xpath路径的正确性,不然爬取不到目标数据

由于要爬取前250名的电影数据,比较笨的方法就是start_urls里面写多个要爬取的url,比如像小编这样写的简单明了

import scrapyfrom DoubanMovies.items import DoubanMovieItemclass DoubanSpider(scrapy.Spider):name = 'douban' #scrapy程序名allowed_domains = ['douban.com'] #允许的域名dbname = 'Douban'  # 数据库名字col = 'douban_movie250'  # 集合名字start_urls = ['https://movie.douban.com/top250','https://movie.douban.com/top250?start=25','https://movie.douban.com/top250?start=50','https://movie.douban.com/top250?start=75','https://movie.douban.com/top250?start=100','https://movie.douban.com/top250?start=125','https://movie.douban.com/top250?start=150','https://movie.douban.com/top250?start=175','https://movie.douban.com/top250?start=200','https://movie.douban.com/top250?start=225'] #需要爬取的网站url列表def parse(self, response):print(response)list = response.xpath('//*[@id="content"]/div/div[1]/ol/li') #xpath目标列表for li in list:# print(li)rank = li.xpath('div/div[1]/em/text()').extract()[0]movie_name = li.xpath('div/div[2]/div[1]/a/span[1]/text()').extract()[0]actors = li.xpath('div/div[2]/div[2]/p[1]/text()').extract()[0].strip()year = li.xpath('div/div[2]/div[2]/p[1]/text()').extract()[1].strip()rating_num = li.xpath('div/div[2]/div[2]/div/span[2]/text()').extract()[0].strip()if li.xpath('div/div[2]/div[2]/p[2]/span/text()').extract():short_comment = li.xpath('div/div[2]/div[2]/p[2]/span/text()').extract()[0].strip()else:short_comment = ''print(rank + ":" + movie_name + ":" + rating_num + ":" + short_comment)item = DoubanMovieItem()item['rank'] = int(rank) #排名item['movie_name'] = movie_name #电影名item['actors'] = actors #演职员item['year'] = year.split('/')[0] #上映年份item['area'] = year.split('/')[1] #上映地区item['type'] = year.split('/')[2] #电影类型item['rating_num'] = rating_num #豆瓣评分item['short_comment'] = short_comment #短评yield item #保存数据

5、开始爬取数据

程序写好了之后,就可以开始爬取数据了,当然过程中可能会有报错之类的,那就只能靠你自己修正了~

爬取命令:

scrapy crawl douban

爬取命令截图:

爬取过程截图:

爬取结果截图:

PS:以上便是简单的豆瓣电影Top 250的爬取过程了,相信热爱生活的你,能一直对生活充满好奇心,毕竟生活要有点期待,潇洒一点,开心最重要~

热爱生活,从电影开始相关推荐

  1. “火车卧铺这么便宜,你为什么还买硬座?”贫穷的理由你想不到……

    知乎上这个问题火了: "火车硬座和卧铺相差仅100元,为什么会有那么多人选择硬座?" 呵,这个"仅"字用得妙! 意思是,区区100块钱,为什么不选择更舒服的卧铺 ...

  2. 如何评价电影《西游记之大圣归来》?

    一. 在我上小学的年纪,最想要拥有的朋友有两个,一个是哆啦a梦,它的异次元口袋如果能让我用用,那该多好:另一个,就是孙悟空.他是那么强悍,十万天兵见了他都绕路走,更别说班主任和家长了. 按西游记的说法 ...

  3. 有哪些你看过五遍以上的电影?

    ​作为一个热衷于看爱情电影的妹子,这8部爱情电影我看了五遍以上! 1. <他其实没那么喜欢你>   剧情简介: GiGi是个对爱情充满幻想的女孩,却在一次次约会中受挫.她的闺蜜Beth和J ...

  4. 《西线无战事》我们才刚开始热爱生活,却不得不对一切开炮

    <西线无战事>我们才刚开始热爱生活,却不得不对一切开炮 埃里希·玛丽亚·雷马克(1898-1970),德裔作家,出生于德国一个工人家庭,18岁时参加第一次世界大战,1929年出版小说< ...

  5. 近一年多看过的电影和书籍

    本文由Markdown语法编辑器编辑完成. 1. 前言: 自从离开学校,进入职场后,感觉时间真的是非常宝贵.随着步入婚姻,结婚生子,属于自己的时间也更少了. 然而,一个人工作是为了更好的生活.如果只是 ...

  6. 没有广泛爱好的人,就不是热爱生活…

    作者:曲玮玮 几个月前和几人吃饭,等菜的间隙有人顺势挑起一个话题,谈各自工作之余的兴趣爱好.紧绷的毛线团突然被扯开线头,沉默的餐桌突然变成热闹的跑马场,烽烟尘土,蹄声阵阵. 当时的气氛是这样的-- 我 ...

  7. 机器学习实战教程(一):K-近邻算法---电影类别分类

    文章目录 机器学习实战教程(一):K-近邻算法 一.简单k-近邻算法 1.k-近邻法简介 2.距离度量 3.Python3代码实现 (1)准备数据集 (2)k-近邻算法 机器学习实战教程(一):K-近 ...

  8. 牛叔说电影-励志四部曲之死亡诗社

    视频地址:牛叔说电影-死亡诗社 文案: 我步入丛林 因为我希望生活得有意义. 我希望活得深刻 汲取生命中所有的精华 把非生命的一切都击溃 以免当我生命终结时 发现自己从来没有活过. 这是美国诗人惠特曼 ...

  9. append从一个添加到另一_真特么激动第一个爬虫----爬取豆瓣电影top250

    养成习惯,先赞后看!!! 前言 之前一直对爬虫有兴趣,但是一直没有真正静下心来去好好学习过,这一段时间跟着b站上的一个教程做了自己人生中第一个爬虫程序,还是很有成就感的. 准备工作 1. 我们爬取一个 ...

最新文章

  1. IT项目的面向对象分析设计、开发及管理
  2. mpvue开发小程序分享朋友圈无法自定义标题解决方法
  3. linux 启动一个网站_在线试用 200 多种 Linux 和 Unix 操作系统
  4. 【uiautomator】运行命令
  5. linux下mysql5.7的安装教程_linux下mysql 5.7.18安装教程 邯郸
  6. 内核并发控制---信号量 (来自网易)
  7. 转]最长递增子序列问题的求解
  8. 「ruby/MiniMagick」用MiniMagick处理图片
  9. mysql 的 null值_MySQL NULL值
  10. ffmpeg 如何音视频同步
  11. VSCode开发react-native app进行android apk打包
  12. 经纬度与大地坐标相互转换
  13. 元宇宙火了,智能家居跟不跟?
  14. Greenplum 优化 - 分布式键,重建索引,序列
  15. cocos2dx-lua制作新手引导
  16. Object is possibly undefined
  17. 祝福考研的兄弟姐妹们!
  18. 关于leanote(蚂蚁笔记私服搭建安装)步骤
  19. 宝塔PostgreSQL管理器
  20. 1654_MIT 6.828 JOS entry.S实现分析

热门文章

  1. 华测教育入选【腾讯课堂 · 薪选课程】--这可能是你进腾讯的最好机会!
  2. 仿新浪抢工长装修招标网站源码老工长装修网源码装修网站源码
  3. 妻子,情人,红颜知己
  4. Springboot WEBOJ项目—— Nginx部署
  5. 图片访问错误显示碎图
  6. 商汤科技发布新一代SensePass工业级可视人脸识别门禁全新升级
  7. 2023北京老博会,CISSE中国国际养老服务业博览会
  8. 【Transformer论文解读】TRAR: Routing the Attention Spans in Transformer for Visual Question Answering
  9. 常用查快递单号,快速查询追踪物流
  10. 手机投屏不是全屏怎么办_手机投屏不满屏怎么办