完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
3个回答
|
|
imdb.cn网站结构分析
imdb.cn是国内的一个影视资料库,应该也是作者爬取别人的数据生成的一个网站,并不是imdb的中文网站。学会爬虫后其实我们也可以做一个这样的网站。 我们打开http://www.imdb.cn/NowPlaying/ 影视资料库页面,如图 该资料库共有292300 条记录 14615 页 通过分析可以知道页码对应的url为http://www.imdb.cn/nowplaying/{页码} 例如: 第一页的url为http://www.imdb.cn/nowplaying/1 14615页的url为http://www.imdb.cn/nowplaying/14615 接下来我们分析每个电影的url,我们点开《大脑东海》它的url为http://www.imdb.cn/title/tt4912402 同样的点开其他的电影,可以发现一个规律,url的格式为http://www.imdb.cn/title/tt{多个数字} 好,现在我们已经找到两个规律,一个是所有电影资料列表的url规律,另一个是每个电影的url规律。我们现在要通过所有的列表,下载每个电影的详细信息,比如电影名称、导演、演员、上映时间、国家等信息。 |
|
|
|
创建爬虫项目
使用命令创建一个项目scrapy startproject imdb MACBOOK:~ yancey$ scrapy startproject imdb New Scrapy project 'imdb', using template directory '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/scrapy/templates/project', created in: /Users/yancey/imdb You can start your first spider with: cd imdb scrapy genspider example example.com 使用pycharm打开我们创建的imdb项目,项目结构如下 根据我们需要的信息重写items.py # -*- coding: utf-8 -*- # Define here the models for your scraped items # # See documentation in: # http://doc.scrapy.org/en/latest/topics/items.html import scrapy class ImdbItem(scrapy.Item): # define the fields for your item here like: url = scrapy.Field() #url title = scrapy.Field() #影片名 在spiders目录下创建一个imdbspider.py # coding:utf-8 from scrapy.spiders import CrawlSpider, Request, Rule from imdb.items import ImdbItem from scrapy.linkextractors import LinkExtractor class ImdbSpider(CrawlSpider): name = 'imdb' allowed_domains = ['www.imdb.cn'] rules = ( Rule(LinkExtractor(allow=r"/title/tt/d+$"), callback="parse_imdb", follow=True), ) def start_requests(self): pages = [] for i in range(1, 14616): url = "http://www.imdb.cn/nowplaying/" + str(i) yield Request(url=url, callback=self.parse) def parse_imdb(self, response): item = ImdbItem() item['url'] = response.url item['title'] = "".join(response.xpath('//*[@]/div[@]/h3/text()').extract()) pass 简单解释一下
|
|
|
|
运行imdb爬虫
运行我们刚写的imdb爬虫,进入imdb目录,使用命令scrapy crawl imdb MACBOOK:imdb yancey$ scrapy crawl imdb /Users/yancey/imdb/imdb/spiders/imdbspider.py:3: ScrapyDeprecationWarning: Module `scrapy.spider` is deprecated, use `scrapy.spiders` instead from scrapy.spider import CrawlSpider, Request, Rule 2016-12-26 23:24:22 [scrapy] INFO: Scrapy 1.2.0 started (bot: imdb) 2016-12-26 23:24:22 [scrapy] INFO: Overridden settings: {'BOT_NAME': 'imdb', 'ROBOTSTXT_OBEY': True, 'NEWSPIDER_MODULE': 'imdb.spiders', 'SPIDER_MODULES': ['imdb.spiders']} 2016-12-26 23:24:22 [scrapy] INFO: Enabled extensions: ['scrapy.extensions.corestats.CoreStats', 'scrapy.extensions.logstats.LogStats'] 2016-12-26 23:24:22 [scrapy] INFO: Enabled downloader middlewares: ['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware', 'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware', 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware', 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware', 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware', 'scrapy.downloadermiddlewares.retry.RetryMiddleware', 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware', 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware', 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware', 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware', 'scrapy.downloadermiddlewares.chunked.ChunkedTransferMiddleware', 'scrapy.downloadermiddlewares.stats.DownloaderStats'] 2016-12-26 23:24:22 [scrapy] INFO: Enabled spider middlewares: ['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware', 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware', 'scrapy.spidermiddlewares.referer.RefererMiddleware', 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware', 'scrapy.spidermiddlewares.depth.DepthMiddleware'] 2016-12-26 23:24:22 [scrapy] INFO: Enabled item pipelines: [] 2016-12-26 23:24:22 [scrapy] INFO: Spider opened 2016-12-26 23:24:22 [scrapy] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 2016-12-26 23:24:22 [scrapy] DEBUG: Crawled (404) # coding:utf-8 from scrapy import cmdline cmdline.execute("scrapy crawl imdb".split()) 在pycharm中运行run.py,同样可以运行imdb爬虫 我个人建议使用集成开发环境进行开发,比如pycharm,pycharm可以轻松的切换python环境或者是安装依赖库。可以通过File–>Default settings–>Project interpreter 点击左下角的“+”可以搜索安装第三方库,先大致提一下,后面我会专门介绍。 github地址 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
“0元购”智元灵犀X1机器人,软硬件全套图纸和代码全公开!资料免费下载!
9008 浏览 2 评论
1440 浏览 0 评论
【实操文档】在智能硬件的大模型语音交互流程中接入RAG知识库
7583 浏览 1 评论
防止AI大模型被黑客病毒入侵控制(原创)聆思大模型AI开发套件评测4
1169 浏览 0 评论
不可错过!人工神经网络算法、PID算法、Python人工智能学习等资料包分享(附源代码)
3477 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-23 04:41 , Processed in 0.581162 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号