2019独角兽企业重金招聘Python工程师标准>>>

Scrapy是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取Web站点并从页面中提取结构化的数据.它最吸引人的地方在于任何人都可以根据需求方便的修改。   MongoDB是现下非常流行的开源的非关系型数据库(NoSql),它是以“key-value”的形式存储数据的,在大数据量、高并发、弱事务方面都有很大的优势。   当Scrapy与MongoDB两者相碰撞会产生怎样的火花呢?与MongoDB两者相碰撞会产生怎样的火花呢?现在让我们做一个简单的爬取小说的TEST

1.安装Scrapy pip install scrapy

2.下载安装MongoDB和MongoVUE可视化 MongoDB下载地址 下载安装的步骤略过,在bin目录下创建一个data文件夹用来存放数据的。

    [MongoVUE下载地址](http://www.mongovue.com/)

   安装完成后我们需要创建一个数据库。   

3.创建一个Scrapy项目 scrapy startproject novelspider 目录结构:其中的novspider.py是需要我们手动创建的(contrloDB不需要理会)   

  4.编写代码

    目标网站:http://www.daomubiji.com/

    

  settings.py

BOT_NAME = 'novelspider'SPIDER_MODULES = ['novelspider.spiders']
NEWSPIDER_MODULE = 'novelspider.spiders'ITEM_PIPELINES = ['novelspider.pipelines.NovelspiderPipeline']  #导入pipelines.py中的方法USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0'
COOKIES_ENABLED = TrueMONGODB_HOST = '127.0.0.1'
MONGODB_PORT = 27017
MONGODB_DBNAME = 'zzl'    #数据库名
MONGODB_DOCNAME = 'Book'   #表名

  pipelines.py

from scrapy.conf import settings
import pymongoclass NovelspiderPipeline(object):def __init__(self):host = settings['MONGODB_HOST']port = settings['MONGODB_PORT']dbName = settings['MONGODB_DBNAME']client = pymongo.MongoClient(host=host, port=port)tdb = client[dbName]self.post = tdb[settings['MONGODB_DOCNAME']]def process_item(self, item, spider):bookInfo = dict(item)self.post.insert(bookInfo)return item

  items.py


from scrapy import Item,Fieldclass NovelspiderItem(Item):# define the fields for your item here like:# name = scrapy.Field()bookName = Field()bookTitle = Field()chapterNum = Field()chapterName = Field()chapterURL = Field()

  在spiders目录下创建novspider.py

from scrapy.spiders import CrawlSpider
from scrapy.selector import Selector
from novelspider.items import NovelspiderItemclass novSpider(CrawlSpider):name = "novspider"redis_key = 'novspider:start_urls'start_urls = ['http://www.daomubiji.com/']def parse(self,response):selector = Selector(response)table = selector.xpath('//table')for each in table:bookName = each.xpath('tr/td[@colspan="3"]/center/h2/text()').extract()[0]content = each.xpath('tr/td/a/text()').extract()url = each.xpath('tr/td/a/@href').extract()for i in range(len(url)):item = NovelspiderItem()item['bookName'] = bookNameitem['chapterURL'] = url[i]try:item['bookTitle'] = content[i].split(' ')[0]item['chapterNum'] = content[i].split(' ')[1]except Exception,e:continuetry:item['chapterName'] = content[i].split(' ')[2]except Exception,e:item['chapterName'] = content[i].split(' ')[1][-3:]yield item

  5.抓取结果

  

转载于:https://my.oschina.net/alarm1673/blog/506650

Scrapy和MongoDB的应用---爬取相关推荐

  1. Scrapy爬虫(6)爬取银行理财产品并存入MongoDB(共12w+数据)

      本次Scrapy爬虫的目标是爬取"融360"网站上所有银行理财产品的信息,并存入MongoDB中.网页的截图如下,全部数据共12多万条.   我们不再过多介绍Scrapy的创建 ...

  2. Crawler之Scrapy:数据挖掘必备的scrapy框架之最完整爬取网页内容攻略

    相关文章推荐 Scrapy:Python3版本上安装数据挖掘必备的scrapy框架详细攻略(二最完整爬取网页内容信息攻略) 目录 scrapy框架之最完整爬取网页内容攻略 scrapy框架之最完整爬取 ...

  3. Python爬虫之scrapy框架360全网图片爬取

    Python爬虫之scrapy框架360全网图片爬取 在这里先祝贺大家程序员节快乐,在此我也有一个好消息送给大家,本人已开通了微信公众号,我会把资源放在公众号上,还请大家小手动一动,关注过微信公众号, ...

  4. [Python Scrapy爬虫] 二.翻页爬取农产品信息并保存本地

    前面 "Python爬虫之Selenium+Phantomjs+CasperJS" 介绍了很多Selenium基于自动测试的Python爬虫程序,主要利用它的xpath语句,通过分 ...

  5. 使用Scrapy、PhantomJS和Selenium爬取知网文献摘要

    使用Scrapy.PhantomJS和Selenium爬取知网文献摘要.以下例子用于爬取"医药卫生科技"类文献摘要. 1.使用Scrapy创建项目 scrapy startproj ...

  6. Scrapy全国历史天气数据爬取

    Scrapy全国历史天气数据爬取 历史天气网站http://www.tianqihoubao.com/lishi/ 1.解析网页 我们要爬取每个城市,近10年的历史天气数据,我们需要进到每个城市历史数 ...

  7. scrapy 斗鱼 主播信息爬取

    原文链接: scrapy 斗鱼 主播信息爬取 上一篇: scrapy 妹子图网站 全站图片爬取 下一篇: TensorFlow models 的slim 模块 使用预训练模型进行识别 api http ...

  8. 【Python】Scrapy爬虫框架小试牛刀:爬取某论坛招聘信息

    Scrapy爬虫框架小试牛刀:爬取某论坛招聘信息 背景 Scrapy工作原理 创建项目 创建爬虫 确定数据爬取思路 编写对象:item.py 制作爬虫:muchongrecruit.py 存储内容:p ...

  9. scrapy的name变量_Python3 Scrapy框架学习四:爬取的数据存入MongoDB

    1. 新建一个scrapy项目: 2.使用PyCharm打开该项目 3.在settings.py文件中添加如下代码:#模拟浏览器,应对反爬 USER_AGENT = 'Mozilla/5.0 (Win ...

  10. scrapy微博反爬虫_Scrapy 爬取新浪微博(解析api)

    python爬虫学习笔记... 本文采用m.weibo.cn站点完成抓取,通过分析api提取数据,数据存储在MongoDB中. 爬虫文件 # -*- coding: utf-8 -*- import ...

最新文章

  1. C++ 中NULL 和 nullptr 的区别
  2. 关于Struts2三种访问Servlet API方式的总结
  3. Android核心分析之二十二Android应用框架之Activity
  4. 中国航发牵手阿里云共同打造:航空新引擎
  5. PowerShell 调用dll
  6. JBoss BRMS最佳实践– BPM流程初始化层的提示
  7. 关于原生AJAX和jQueryAJAX的编程
  8. css中属性设置成百分比
  9. mysql 修改这段长度_MySQL中使用group_concat()函数数据被截取(有默认长度限制),谨慎!...
  10. 麦克风增强软件_麦克风电流声去除方法(不花一分钱去电流声)
  11. python int函数的实现_python实现int函数的案例分析
  12. 能否设计变容量发动机
  13. Allegro封装制作
  14. Excel表格如何筛选重复内容(筛选重复数据的方法)
  15. 程序员突然倒地!中软国际回应称系低血糖引发
  16. 最近计算机速度测试情况,速度测试
  17. android 两张电信_双卡双待双核2.3 电信机皇摩托XT882评测
  18. 如何用p5js做一个可爱的鲶鲶并添加不倒翁效果
  19. 异构 ? 系统差异应该成为过去式, 专注在应用和数据 - 异构平台整合策略之1 - SSSD
  20. 安卓手机小说阅读器_百万小说阅读器app免费版下载-百万小说阅读器app手机版下载v1.4...

热门文章

  1. onConfigurationChanged方法的使用
  2. 组队开发第二周第五次会议
  3. JsLib组件,扩展WSH功能(新版本)
  4. iOS setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key 问题
  5. Linux下读写UART串口的代码
  6. hdu-1521 排列组合 指数型母函数
  7. mktime 夏令时
  8. R爬虫小白入门:Rvest爬链家网+分析(三)
  9. 数据分析没有思路怎么办
  10. PopupWindow点击空白区域消失