放养的小爬虫--豆瓣电影入门级爬虫(mongodb使用教程~)

放养的小爬虫--豆瓣电影入门级爬虫(mongodb使用教程~)

1

笔者声明:只用于学习交流,不用于其余途径。源代码已上传github。githu地址:https://github.com/Erma-Wang/Spider
笔者声明:只用于学习交流,不用于其余途径。源代码已上传github。githu地址:https://github.com/Erma-Wang/Spider
笔者声明:只用于学习交流,不用于其余途径。源代码已上传github。githu地址:https://github.com/Erma-Wang/Spiderpython

重要的事情说三遍~~~!!!只用于学习交流,私自用于其余途径,后果自负!!!
github源代码地址https://github.com/Erma-Wang/Spider(注意,本仓库还有其余的小爬虫,本文章讲解的是DouBanSpider···),别忘了给个star哦 ! @、@git


开篇以前~闲聊几句~

笔者是iOS开发从业者,可是我相信不少小伙伴也和我同样,并非Python开发者,却对爬虫技术(scrapy)颇感兴趣儿~以前写过一些iOS的博客,最近在写爬虫技术分享的博客的时候,发现不少小伙伴对爬虫技术比对iOS兴趣点来的大~这时候,我就在想,为何叻?github

我认为爬虫技术基本原理就三点~下载数据~匹配数据~保存数据~,原本一件很简单的事儿,却有这么多的爬虫爱好者去研究~去探索~而且还诞生了伟大的框架scrapypyspider,可是我的认为其是一种工具。这么多的非python开发者对爬虫技术(scrapy、pyspider)感兴趣,我想是由于爬虫技术属于逆向工程吧~人们一直以来对正向的思惟,正向的发展,正向的软件开发等等一切事物指挥若定,却不多有人对一件事物,一件物品,一个软件,甚至一个网站开发出来后反向对到其制做过程,制做工序,制做原料做其推导~古文说以古为镜,能够知兴替,我想,对一件已经制做出来的物品,推导其制做过程,比制做这件物品更来得有兴趣吧~mongodb


总结几点~

以前在上一篇博客中有些小伙伴给我了一些不错的idea~数据库

  • 有读者建议我在以前的爬虫上加上代理,这点儿,笔者仍是以不加代理的风格继续写爬虫,由于毕竟加上代理我会担忧一些很差的小伙伴拿笔者写好的爬虫去作了很差的事儿,请谅解~若有我的特殊需求,上github上自行fork修改~
  • 以前的JDSpider具备时效性~由于毕竟京东也不是傻子,规则会常常变动~
  • 以前有效换提出能不能抓取AJAX的url,额~对于这样高深的技术,超出笔者能力范围~目前为止,惟一的办法就是抓包工具抓包,人工手动分析~
  • 有一些idea还在研究中,好比说爬取淘宝数据~这个有难度,是真心有难度~
  • 最后,笔者所写爬虫技术含量并不高,只是入门级别的爬虫,只用于爬虫爱好者交流分享摆了~适合于爬虫初学者,大多为scrapy。。。

开篇

笔者在以前的博客里写过京东的Spider,首先很是感谢小伙伴对个人支持~在此,笔者写了一个入门级别的小爬虫,给一些想学scrapy可是尚未开始学习scrapy的小伙伴讲解一些scrapy的一些基础知识吧~本文虽然对于scrapy来讲彻底算是入门级别,可是您应该具备必定的网页编程基础和网络基础知识。本文中主要讲解mongodb的基本使用,附带一个实战小爬虫~编程

仍是同样,scrapy不作详细解释~有疑问,找度娘~数组

抓取目标url和目标数据item

目标url:https://movie.douban.com/top250

目标数据 item

标题:title = Field()
电影信息:movieInfo = Field()
评分:star = Field()
经典名言:quote = Field()网络

目标网站分析与思路分析(爬虫常规思路~)

先看看目标网站吧~是的,网上不少用豆瓣作爬虫教程,由于比较好爬取吧~笔者在这也用豆瓣爬虫来做为演示~
1框架

1、抓取li标签构建数组~

是的,和常规网站同样一个li标签表明一个小模块的整合~思路先把每一个li抓取出来放入一个数组中,这也是常规思路,先看关键代码吧~scrapy

实例化选择器

selector = Selector(response)

抓取li标签构建Movies数组

Movies = selector.xpath('//div[@class="info"]')

2、遍历数组取出each~

for in循环取出~没啥说的

3、选择器匹配数据~

抓取数据~

title = eachMovie.xpath('div[@class="hd"]/a/span[@class="title"]/text()').extract()
movieInfo = eachMovie.xpath('div[@class="bd"]/p/text()').extract()
star = eachMovie.xpath('div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()').extract()
quote = eachMovie.xpath('div[@class="bd"]/p[@class="quote"]/span/text()').extract()

4、传值给item~

熟悉MVC的小伙伴在学习scrapy的时候都应该知道~item在这里就至关于MVC里面的Model。

item['title'] = title
item['movieInfo'] = ';'.join(movieInfo)
item['star'] = star
item['quote'] = quote

5、翻页~

抓取下一页href的url,递归调用Request
nextLink = selector.xpath('//span[@class="next"]/link/@href').extract()
if nextLink:
nextLink = nextLink[0]
print(nextLink)
yield Request(self.url + nextLink,callback=self.parse)


Ok~数据抓取下来了,如今考虑一个问题~保存~

本博客主要讲解的是mongodb和scrapy配合使用~下面看看代码怎么写的吧~

首先在setting里面做配置~

设置传输的管道~为何是管道叻~笔者英语不咋滴~喜欢这么翻译pipeline~

ITEM_PIPELINES = ['DouBanSpider.pipelines.DoubanspiderPipeline']

设置mongodb地址~

MONGODB_HOST = '127.0.0.1'

设置端口号~也就是port~默认为27017~

MONGODB_PORT = 27017

设置数据库名字~

MONGODB_DBNAME = 'DouBan'

设置存放本次数据的表名~

MONGODB_DOCNAME = 'DouBanDy'


OK~配置好setting后再配置Pipeline吧~

咱们借助pymongo这个模块来配置Pipeline吧~导入pymongo模块后~
只作关键两步讲解~

连接数据库~

client = pymongo.MongoClient(host=host,port=port)

指向数据库里面要存放数据的表名~

tdb = client[dbName]

向指定的表里添加数据~两句关键代码~

self.post = tdb[settings['MONGODB_DOCNAME']]
self.post.insert(dyInfo)


好吧~看看效果吧~

爬虫启动~

1

开始爬取~

1

再看看数据库~

1


最后对mongodb的使用作个简单的介绍~

mongodb属于非关系型数据库~是一个基于分布式文件存储的数据库。由C++语言编写。。。好吧~这些废话我不在这里说了~本身百度百科吧~我写博客写你能在其余地方都能找到的理论性的知识~简单的说说使用mongodb的安装和使用吧~

mongodb的安装~

网上有一大把一大把mongodb的安装教程~本身搜索去吧~笔者是经过brew安装的mongodb,由于笔者使用的Mac,尝试过不少种安装mongodb的方法都未成功~最后,尝试了brew安装成功~若是读者使用的是Mac,请尝试尝试brew安装吧~

启动mongodb服务~

在控制台输入 mongod,这个指令是启动mongod的服务,当出现下图,表示成功~

启动mongodb数据库~

启动mongodb服务后从新打开一个新的控制台窗口~启动mongodb数据库~在新的控制台窗口输入mongo,这时候会出现下面的界面~表示成功~

使用Robmongo管理数据库~

在Mac上最好用的就是Robmongo把~界面还行~基本的功能也有~

建立mongodb的连接~

建立成功后就能够用上文中的小爬虫对mongodb添加数据了~


小爬虫使用小提示~

  • scrapy crawl YourSpiderName,,最后加的是爬虫name,而不是项目名字~
  • 须要的环境本身配置,跑不起来报错,请百度,爬虫笔者已经亲测,能够跑~
  • 本爬虫没有设置代理,由于用于学习交流吧~
  • 本爬虫已经更改请求头里的USER_AGENT,请改成本身的吧
  • 最后项目已经上传到github,github源代码地址https://github.com/Erma-Wang/Spider(注意,本仓库还有其余的小爬虫,本文章讲解的是JDSpider···),别忘了给个star哦@、@
  • 还要了解更多的小爬虫的朋友们能够关注本博,并在本博的spider中找到其余的小爬虫,笔者会定时更新小爬虫的~

重要的事情再说三遍:

本文和本爬虫只用于学习交流,不用于其余途径,后果自负~!~!

本文和本爬虫只用于学习交流,不用于其余途径,后果自负~!~!

本文和本爬虫只用于学习交流,不用于其余途径,后果自负~!~!

转载请注明来自吃饭睡觉撸码的博客 http://www.cnblogs.com/Erma-king/,并包含相关连接。

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息