# -*- coding: utf-8 -*-
import scrapy
from daomu.items import DaomuItem class DaomuspiderSpider(scrapy.Spider):
name = "daomuspider"
# allowed_domains = ["www.daomubiji.com"]
start_urls = ['http://www.daomubiji.com/']
index_url = 'http://www.daomubiji.com/' def start_requests(self):
yield scrapy.Request(url=self.index_url,callback=self.parse_book) def parse_book(self, response):
for url in response.css('.article-content a'):
book_url = url.css('a::attr(href)').extract_first()
yield scrapy.Request(url=book_url, callback=self.parse_chapter) def parse_chapter(self, response):
item = DaomuItem()
book_title = response.css('.focusbox .container h1::text').extract_first()
book_info = response.css('.focusbox .container .focusbox-text::text').extract_first()
book_url = response.url for chapter in response.css('.excerpts-wrapper .excerpts .excerpt'):
chapter_title = chapter.css('a::text').extract_first().split(' ')[1] + ':'+ chapter.css('a::text').extract_first().split(' ')[-1]
chapter_url = chapter.css('a::attr(href)').extract_first() item['book_title'] = book_title
item['book_info'] = book_info
item['book_url'] = book_url
item['chapter_title'] = chapter_title
item['chapter_url'] = chapter_url yield item
yield scrapy.Request(url = chapter_url,callback=self.parse_detail, meta={'item':item})#重点在这里,用meta进行转移到下一个函数 def parse_detail(self, response):
item = response.meta['item']
content = response.css('.article-content p::text').extract()
item['content'] = content
yield item
import pymongo

class DaomuPipeline(object):

    def __init__(self):
self.mongo_uri = 'localhost'
self.mongo_db = 'daomu' # @classmethod
# def frow_crawler(cls, crawler):
# return cls(
# mongo_uri = crawler.settings.get('MONGO_URI'),
# mongo_db = crawler.settings.get('MONGO_DB')
# ) def open_spider(self,spider):
self.client = pymongo.MongoClient(self.mongo_uri)
self.db = self.client[self.mongo_db] def process_item(self, item, spider):
name = item.__class__.__name__
self.db[name].insert(dict(item))#一定要注意这里用dict
return item def close_spider(self, spider):
self.client.close()

scrapy爬取小说盗墓笔记的更多相关文章

  1. Scrapy爬取小说简单逻辑

    Scrapy爬取小说简单逻辑 一 准备工作 1)安装Python 2)安装PIP 3)安装scrapy 4)安装pywin32 5)安装VCForPython27.exe ........... 具体 ...

  2. python2.7 爬虫_爬取小说盗墓笔记章节及URL并导入MySQL数据库_20161201

    1.爬取页面 http://www.quanshu.net/book/9/9055/ 2.用到模块urllib(网页下载),re正则匹配取得title及titleurl,urlparse(拼接完整ur ...

  3. scrapy 爬取小说

    QiushuSpider # -*- coding: utf-8 -*- import scrapy import time from qiushu.items import QiushuItem c ...

  4. Scrapy 应用之爬取《盗墓笔记》

    爬取<盗墓笔记>和爬取<宦海沉浮>原理一样,但是使用了两种不同的追踪链接的方式,<盗墓笔记>使用的是跟踪下一页链接,直至没有下一页为止,<宦海沉浮>则是 ...

  5. 小说免费看!python爬虫框架scrapy 爬取纵横网

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 风,又奈何 PS:如有需要Python学习资料的小伙伴可以加点击下方 ...

  6. 以豌豆荚为例,用 Scrapy 爬取分类多级页面

    本文转载自以下网站:以豌豆荚为例,用 Scrapy 爬取分类多级页面 https://www.makcyun.top/web_scraping_withpython17.html 需要学习的地方: 1 ...

  7. scrapy 爬取纵横网实战

    前言 闲来无事就要练练代码,不知道最近爬取什么网站好,就拿纵横网爬取我最喜欢的雪中悍刀行练手吧 准备 python3 scrapy 项目创建: cmd命令行切换到工作目录创建scrapy项目  两条命 ...

  8. Python实战项目网络爬虫 之 爬取小说吧小说正文

    本次实战项目适合,有一定Python语法知识的小白学员.本人也是根据一些网上的资料,自己摸索编写的内容.有不明白的童鞋,欢迎提问. 目的:爬取百度小说吧中的原创小说<猎奇师>部分小说内容 ...

  9. Scrapy爬取美女图片 (原创)

    有半个月没有更新了,最近确实有点忙.先是华为的比赛,接着实验室又有项目,然后又学习了一些新的知识,所以没有更新文章.为了表达我的歉意,我给大家来一波福利... 今天咱们说的是爬虫框架.之前我使用pyt ...

随机推荐

  1. [POJ 3635] Full Tank?

    题目 Description 已知每个点的加油站的油价单价(即点权),每条路的长度(边权). 有q个询问,每个询问包括起点s.终点e和油箱容量c. 问从起点走到终点的最小花费.如果不可达输出impos ...

  2. 总结的Javascript插件

    1.很好用的弹窗 https://limonte.github.io/sweetalert2/ https://github.com/limonte/sweetalert2 import './unt ...

  3. docker进阶-利用dcoker Swarm搭建简单集群

    什么是Swarm   在介绍Swarm之前我们要说一下什么Docker三剑客? Docker-Machine:负责在多种平台上快速安装 Docker 环境. Docker-Compose:Docker ...

  4. 关于JSP页面Property [ssid] not found on type [java.lang.String]错误的注意事项

    转发于:http://blog.csdn.net/w86440044/article/details/28277177

  5. 实现Windows数据绑定

    dataSet数据集   dataset驻留于内存临时存储数据简单的理解为一个临时数据库将数据源的数据保存在内存中独立于任何数据库创建dataset对象引入命名空间:system.Datadatase ...

  6. Mysql加密解密随机函数

    MD5(str) md5加密 SELECT MD5('hello') 5d41402abc4b2a76b9719d911017c592 sha(str) sha加密 SELECT SHA('hello ...

  7. python爬虫遇到状态码304,705

    304状态码是什么? 如果客户端发送了一个带条件的GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个304状态码.简单的表达就是:客户端已经 ...

  8. java中的异常以及 try catch finally以及finally的执行顺序

    java中的 try.catch.finally及finally执行顺序详解: 1.首相简单介绍一下异常以及异常的运行情况: 在Java中异常的继承主要有两个: Error和Exception 这两个 ...

  9. drbd(三):drbd的状态说明

    本文目录:1.drbd配置文件2.状态 2.1 连接状态(connect state,cs)和复制状态 2.2 角色状态(roles,ro) 2.3 磁盘状态(disk state,ds) 2.4 I ...

  10. Spring之事务管理的好处

    在以往的JDBCTemplate中事务提交成功,异常处理都是通过Try/Catch 来完成,而在Spring中.Spring容器集成了TransactionTemplate,封装了所有对事务处理的功能 ...