Scrapy和MongoDB的应用---爬取
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的应用---爬取相关推荐
- Scrapy爬虫(6)爬取银行理财产品并存入MongoDB(共12w+数据)
本次Scrapy爬虫的目标是爬取"融360"网站上所有银行理财产品的信息,并存入MongoDB中.网页的截图如下,全部数据共12多万条. 我们不再过多介绍Scrapy的创建 ...
- Crawler之Scrapy:数据挖掘必备的scrapy框架之最完整爬取网页内容攻略
相关文章推荐 Scrapy:Python3版本上安装数据挖掘必备的scrapy框架详细攻略(二最完整爬取网页内容信息攻略) 目录 scrapy框架之最完整爬取网页内容攻略 scrapy框架之最完整爬取 ...
- Python爬虫之scrapy框架360全网图片爬取
Python爬虫之scrapy框架360全网图片爬取 在这里先祝贺大家程序员节快乐,在此我也有一个好消息送给大家,本人已开通了微信公众号,我会把资源放在公众号上,还请大家小手动一动,关注过微信公众号, ...
- [Python Scrapy爬虫] 二.翻页爬取农产品信息并保存本地
前面 "Python爬虫之Selenium+Phantomjs+CasperJS" 介绍了很多Selenium基于自动测试的Python爬虫程序,主要利用它的xpath语句,通过分 ...
- 使用Scrapy、PhantomJS和Selenium爬取知网文献摘要
使用Scrapy.PhantomJS和Selenium爬取知网文献摘要.以下例子用于爬取"医药卫生科技"类文献摘要. 1.使用Scrapy创建项目 scrapy startproj ...
- Scrapy全国历史天气数据爬取
Scrapy全国历史天气数据爬取 历史天气网站http://www.tianqihoubao.com/lishi/ 1.解析网页 我们要爬取每个城市,近10年的历史天气数据,我们需要进到每个城市历史数 ...
- scrapy 斗鱼 主播信息爬取
原文链接: scrapy 斗鱼 主播信息爬取 上一篇: scrapy 妹子图网站 全站图片爬取 下一篇: TensorFlow models 的slim 模块 使用预训练模型进行识别 api http ...
- 【Python】Scrapy爬虫框架小试牛刀:爬取某论坛招聘信息
Scrapy爬虫框架小试牛刀:爬取某论坛招聘信息 背景 Scrapy工作原理 创建项目 创建爬虫 确定数据爬取思路 编写对象:item.py 制作爬虫:muchongrecruit.py 存储内容:p ...
- scrapy的name变量_Python3 Scrapy框架学习四:爬取的数据存入MongoDB
1. 新建一个scrapy项目: 2.使用PyCharm打开该项目 3.在settings.py文件中添加如下代码:#模拟浏览器,应对反爬 USER_AGENT = 'Mozilla/5.0 (Win ...
- scrapy微博反爬虫_Scrapy 爬取新浪微博(解析api)
python爬虫学习笔记... 本文采用m.weibo.cn站点完成抓取,通过分析api提取数据,数据存储在MongoDB中. 爬虫文件 # -*- coding: utf-8 -*- import ...
最新文章
- C++ 中NULL 和 nullptr 的区别
- 关于Struts2三种访问Servlet API方式的总结
- Android核心分析之二十二Android应用框架之Activity
- 中国航发牵手阿里云共同打造:航空新引擎
- PowerShell 调用dll
- JBoss BRMS最佳实践– BPM流程初始化层的提示
- 关于原生AJAX和jQueryAJAX的编程
- css中属性设置成百分比
- mysql 修改这段长度_MySQL中使用group_concat()函数数据被截取(有默认长度限制),谨慎!...
- 麦克风增强软件_麦克风电流声去除方法(不花一分钱去电流声)
- python int函数的实现_python实现int函数的案例分析
- 能否设计变容量发动机
- Allegro封装制作
- Excel表格如何筛选重复内容(筛选重复数据的方法)
- 程序员突然倒地!中软国际回应称系低血糖引发
- 最近计算机速度测试情况,速度测试
- android 两张电信_双卡双待双核2.3 电信机皇摩托XT882评测
- 如何用p5js做一个可爱的鲶鲶并添加不倒翁效果
- 异构 ? 系统差异应该成为过去式, 专注在应用和数据 - 异构平台整合策略之1 - SSSD
- 安卓手机小说阅读器_百万小说阅读器app免费版下载-百万小说阅读器app手机版下载v1.4...