使用Scrapy爬取网易云音乐信息及热评

版权申诉
4星 · 超过85%的资源 3 下载量 114 浏览量 更新于2024-12-11 1 收藏 13KB ZIP 举报
资源摘要信息: "本项目为一个基于Scrapy框架的爬虫程序,主要目的是爬取网易云音乐平台上的所有歌曲信息以及热门评论。项目涉及的技术点包括网络爬虫的设计与实现、MongoDB数据库的使用以及对网易云音乐网站数据的抓取和解析。" 1. Scrapy框架:Scrapy是一个快速、高层次的网页爬取和网页抓取框架,用于爬取网站数据并从页面中提取结构化的数据。Scrapy使用Python语言编写,它的主要优势在于它的扩展性强、组件化程度高、易于编写代码和维护。Scrapy框架包含了一套完整的数据抓取流程,从初始的URL请求开始,通过中间件进行处理,然后传递到爬虫引擎,爬虫引擎再进行数据解析和提取,最终将提取的数据存储到数据库或文件中。 2. 网络爬虫:网络爬虫(Web Crawler)是一种自动提取网页内容的程序,通常用于搜索引擎索引网页。在这个项目中,爬虫将模拟人工访问网易云音乐网站,根据设定的规则自动获取歌曲列表、歌曲详情以及用户评论等信息。爬虫程序需要遵守robots.txt协议,合理规划爬取策略以避免对目标网站造成过大压力。 3. MongoDB数据库:MongoDB是一个面向文档的NoSQL数据库,其特点包括高性能、高可用性和易扩展。它存储的数据是文档形式的,使用了BSON(一种类似JSON的二进制形式)格式存储。在本项目中,爬虫获取的数据将被存储在MongoDB中,方便后续的数据查询和分析。MongoDB的灵活性和索引支持有助于有效地管理和查询大量数据。 4. 网易云音乐:网易云音乐是一个流行的在线音乐服务平台,提供丰富的歌曲资源和社交功能,如评论、分享和音乐推荐。在本项目中,网易云音乐作为被爬取的数据源,需要利用其网页结构和API接口来获取相关数据。 5. 爬取歌曲信息:爬虫程序将访问网易云音乐的歌曲列表页面,解析出每首歌曲的基本信息,如歌曲名称、歌手、专辑、发布日期等,并将这些信息保存到MongoDB数据库中。 6. 爬取热评信息:除了歌曲信息外,项目还将关注歌曲下的用户评论。热评通常代表了歌曲的受欢迎程度和用户的喜好。爬虫将爬取歌曲下的评论数据,包括评论内容、评论者信息、评论时间和点赞数等,并同样存入数据库中。 7. 技术栈构建:项目中使用的技术栈主要包括Scrapy框架、MongoDB数据库以及Python编程语言。Python作为爬虫的开发语言,因其简洁易学、库丰富、执行效率高等特点,在爬虫开发中具有广泛的应用。 通过本项目,可以学习到网络爬虫设计、数据抓取、信息解析、数据存储、以及使用Scrapy和MongoDB等技术进行大型项目开发的经验。同时,对于网易云音乐的数据结构和页面布局也会有一个深入的了解。需要注意的是,爬虫开发过程中应遵守相关法律法规,尊重数据源网站的版权和隐私政策。
2021-07-10 上传
基于Python Scrapy实现的网易云音乐music163数据爬取爬虫系统 含全部源代码 基于Scrapy框架的网易云音乐爬虫,大致爬虫流程如下: - 以歌手页为索引页,抓取到全部歌手; - 从全部歌手页抓取到全部专辑; - 通过所有专辑抓取到所有歌曲; - 最后抓取歌曲的精彩评论。 数据保存到`Mongodb`数据库,保存歌曲的歌手,歌名,专辑,和热评的作者,赞数,以及作者头像url。 抓取评论者的头像url,是因为如果大家喜欢,可以将他做web端。 ### 运行: ``` $ scrapy crawl music ``` #!/usr/bin/python #-*-coding:utf-8-*- import time from pprint import pprint from scrapy.spider import BaseSpider from scrapy.selector import HtmlXPathSelector from scrapy.http import Request from woaidu_crawler.items import WoaiduCrawlerItem from woaidu_crawler.utils.select_result import list_first_item,strip_null,deduplication,clean_url class WoaiduSpider(BaseSpider): name = "woaidu" start_urls = ( 'http://www.woaidu.org/sitemap_1.html', ) def parse(self,response): response_selector = HtmlXPathSelector(response) next_link = list_first_item(response_selector.select(u'//div[@class="k2"]/div/a[text()="下一页"]/@href').extract()) if next_link: next_link = clean_url(response.url,next_link,response.encoding) yield Request(url=next_link, callback=self.parse) for detail_link in response_selector.select(u'//div[contains(@class,"sousuolist")]/a/@href').extract(): if detail_link: detail_link = clean_url(response.url,detail_link,response.encoding) yield Request(url=detail_link, callback=self.parse_detail) def parse_detail(self, response): woaidu_item = WoaiduCrawlerItem() response_selector = HtmlXPathSelector(response) woaidu_item['book_name'] = list_first_item(response_selector.select('//div[@class="zizida"][1]/text()').extract()) woaidu_item['author'] = [list_first_item(response_selector.select('//div[@class="xiaoxiao"][1]/text()').extract())[5:].strip(),] woaidu_item['book_description'] = list_first_item(response_selector.select('//div[@class="lili"][1]/text()').extract()).strip() woaidu_item['book_covor_image_url'] = list

为什么会这样[user_mongo@nosql01 replicaset]$ cd /opt [user_mongo@nosql01 opt]$ ll total 0 drwxr-xr-x. 3 root root 25 Mar 16 17:08 servers drwxr-xr-x. 2 root root 51 Mar 16 17:10 software [user_mongo@nosql01 opt]$ tar -zxvf /opt/software/mongodb-linux-x86_64-rhel70-4.4.12.tgz -C /opt/servers/mongodb_demo/replicaset/ mongodb-linux-x86_64-rhel70-4.4.12/LICENSE-Community.txt tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/LICENSE-Community.txt: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/MPL-2 tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/MPL-2: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/README tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/README: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/THIRD-PARTY-NOTICES tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/THIRD-PARTY-NOTICES: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/bin/install_compass tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/bin/install_compass: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/bin/mongo tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/bin/mongo: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/bin/mongod tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/bin/mongod: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/bin/mongos tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/bin/mongos: Cannot open: No such file or directory tar: Exiting with failure status due to previous errors [user_mongo@nosql01 opt]$ tar -zcvf /opt/software/mongodb-linux-x86_64-rhel70-4.4.12.tgz -C /opt/servers/mongodb_demo/replicaset/ tar: Cowardly refusing to create an empty archive Try `tar --help' or `tar --usage' for more information.

2023-06-01 上传