当前位置: 首页 > 后端技术 > Python

Python爬虫案例:爬取top250花瓣电影的电影数据并存入MongoDB

时间:2023-03-25 22:57:21 Python

爬取花瓣电影top250movie.douban.com/top250的电影数据,保存在MongoDB中。1.items.pyclassDoubanspiderItem(scrapy.Item):#电影标题title=scrapy.Field()#电影评分=scrapy.Field()#电影信息内容=scrapy.Field()#介绍信息=scrapy.Field()2。spiders/douban.pyimportscrapyfromdoubanSpider.itemsimportDoubanspiderItemclassDoubanSpider(scrapy.Spider):name="douban"allowed_domains=["movie.douban.com"]start=0url='https://movie.douban.com/top250?start='end='&filter='start_urls=[url+str(start)+end]defparse(self,response):item=DoubanspiderItem()movies=response.xpath("//div[@class=\'info\']")foreachinmovies:title=each.xpath('div[@class="hd"]/a/span[@class="title"]/text()').extract()content=each.xpath('div[@class="bd"]/p/text()').extract()score=each.xpath('div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()').extract()info=each.xpath('div[@class="bd"]/p[@class="quote"]/span/text()').extract()item['title']=title[0]#separatedby;内容列表中的所有元素组合成一个新的字符串item['content']=';'.join(content)item['score']=score[0]item['info']=info[0]#提交itemyielditemifself.start<=225:self.start+=25yieldscrapy.Request(self.url+str(self.start)+self.end,callback=self.parse)3.pipelines.pyfromscrapy.confimportsettingsimportpymongoclassDoubanspiderPipeline(object):definit(self):#获取设置主机名、端口号和数据库名host=settings['MONGODB_HOST']port=settings['MONGODB_PORT']dbname=settings['MONGODB_DBNAME']#pymongo.MongoClient(host,port)创建MongoDB链接client=pymongo.MongoClient(host=host,port=port)#指向指定的数据库mdb=client[dbname]#获取数据库self存储的数据的表名.post=mdb[settings['MONGODB_DOCNAME']]defprocess_item(self,item,spider):data=dict(item)#向指定表添加数据self.post.insert(data)returnitem4,settings.pyBOT_NAME='豆瓣蜘蛛'SPIDER_MODULES=['豆瓣nSpider.spiders']NEWSPIDER_MODULE='doubanSpider.spiders'ITEM_PIPELINES={'doubanSpider.pipelines.DoubanspiderPipeline':300}#通过在用户代理USER_AGENT='Mozilla/5.0(Macintosh;IntelMacOSX10_11_3)AppleWebKit/537.36(KHTML,likeGecko)Chrome/48.0.2564.116Safari/537.36'#MONGODB上识别你自己(和你的网站)来负责任地抓取HostLoopback地址127.0.0.1MONGODB_HOST='127.0.0.1'#端口号,默认为27017MONGODB_PORT=27017#设置数据库名MONGODB_DBNAME='豆瓣'#存放这个数据的表名MONGODB_DOCNAME='豆瓣电影'5.启动运行MongoDB数据库需要两条命令:mongod:是mongoDB数据库进程本身mongo:是命令行shellClientsudomongod#先启动数据库服务,然后执行Scrapysudomongo#启动数据库shell使用下面的命令mongoshell:#查看当前数据库>db#列出所有数据库>showdbs#连接豆瓣数据库>useDouBan#列出所有表>showcollections#查看表中的数据>db.DouBanMoives.find()#Copyand访问链接:https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.4ace1deb26SVlT&ft=t&id=619117901939获取全套完整python视频课程小伙伴,怎么样,运行后结果如何?和下面一样吗?