QiushuSpider

# -*- coding: utf-8 -*-
import scrapy
import time
from qiushu.items import QiushuItem class QiushuspiderSpider(scrapy.Spider):
name = 'QiushuSpider'
allowed_domains = ['www.qiushu.cc']
start_urls = ['http://www.qiushu.cc/'] def parse(self, response):
'''解析分类列表'''
# TODO 解析分类
# 分类URLs
links = response.xpath('//p[@class="hot_tips"]/a/@href').extract()
# 所有类型链接
for i in links:
url = 'http://www.qiushu.cc' + i
yield scrapy.Request(url, callback=self.parse_books, dont_filter=True) def parse_books(self, response):
'''解析书籍列表'''
# TODO: 解析书籍列表
# time.sleep(2)
book_url = []
for i in response.xpath('//*[@id="main"]/div[1]/div/div/ul/li'):
book_dan_url = ''.join(i.xpath('.//span[@class="t1"]/a/@href').extract_first())
book_url.append(book_dan_url)
print('*' * 30, book_dan_url)
# import ipdb as pdb; pdb.set_trace()
print('*' * 30, book_url)
for i in book_url:
yield scrapy.Request(i, callback=self.parse_section, dont_filter=True)
# TODO: 处理下一页
xia_url = ''.join(response.xpath('//*[@class="next"]/@href').extract())
if bool(xia_url):
yield scrapy.Request(xia_url, callback=self.parse_books, dont_filter=True) def parse_section(self, response):
'''解析具体的某一章'''
# TODO: 解析具体的章
item = QiushuItem()
# 书名
item['name'] = ''.join(response.xpath('//div[@class="title"]/h1/text()').extract())
# 作者
item['author'] = ''.join(response.xpath('//div[@class="title"]/span/text()').extract())
# 书籍分类标签
item['booktype'] = ''.join(response.xpath('//*[@id="main"]/div[2]/text()[2]').extract()).split('>')[1]
# 书籍状态
item['state'] = ''.join(response.xpath('//*[@id="main"]/div[2]/span/text()').extract())
# 书籍的有效地址
item['showUrl'] = response.url
# 书籍描述
item['describe'] = ''.join(response.xpath('//div[@class="intro"]/p/text()').extract())
yield item

items

# -*- coding: utf-8 -*-

# Define here the models for your scraped items
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/items.html import scrapy class QiushuItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
# 书名
name = scrapy.Field()
# 作者
author = scrapy.Field()
# 书籍分类标签
booktype = scrapy.Field()
# 书籍状态
state = scrapy.Field()
# 书籍的有效地址
showUrl = scrapy.Field()
# 书籍描述
describe = scrapy.Field()

scrapy 爬取小说的更多相关文章

  1. Scrapy爬取小说简单逻辑

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

  2. scrapy爬取小说盗墓笔记

    # -*- coding: utf-8 -*- import scrapy from daomu.items import DaomuItem class DaomuspiderSpider(scra ...

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

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

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

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

  5. scrapy 爬取纵横网实战

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

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

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

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

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

  8. 【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

    原文:教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http:/ ...

  9. scrapy爬取西刺网站ip

    # scrapy爬取西刺网站ip # -*- coding: utf-8 -*- import scrapy from xici.items import XiciItem class Xicispi ...

随机推荐

  1. C5.cpp

    (1)不要使用delete来释放不是new分配的内存(2)不要使用delete来释放同一个内存块两次(3)若用new[]分配内存 ,则应该用delete[]来释放(4)若用new分配内存 ,则应该用d ...

  2. java-网络通信-索引

           HTTP协议 关于HTTP协议,一篇就够了 HTTP与HTTPS的区别 HTTP Keep-Alive模式 HTTP长连接和短连接 HTTP的长连接(持久连接)和短连接 HTTP的长连接 ...

  3. Android 开发 使用javax.mail发送邮件。

    简介 sun公司开源的邮件发送工具. 依赖 implementation 'com.sun.mail:android-mail:1.6.0' implementation 'com.sun.mail: ...

  4. 渐进反馈式搜索技术助力运维工程师——Linux命令高效检索

    日常生活工作中,我们通过搜索引擎查询相关资料时,经常遇到不知如何指定准确关键词的情况,仅仅根据指定大概范围的关键词时,搜索结果往往不能尽如人意. <信息导航>APP最新版本(Ver 1.1 ...

  5. ==和equals的比较方式

    关系操作符生成的是一个boolean结果,它们计算的是操作数的值之间的关系.——摘自<Java编程思想> 多读几遍之后你会发现——这不就是句废话么233333.(开个玩笑不要打我) 先说 ...

  6. C++使用指针的优点

    使用指针可以带来如下的好处: (1)可以提高程序的编译效率和执行速度,使程序更加简洁. (2)通过指针被调用函数可以向调用函数处返回除正常的返回值之外的其他数据,从而实现两者间的双向通信. (3)利用 ...

  7. 微信小程序中把页面生成图片

    这个问题我上网搜了一下,答案有多种,但是真正能用的没有几何.很多答案都是雷同,有的网友也不负责任,直接拿来照抄,自己也不跑一遍看看.哎,不说了,说多了全是泪.希望我们的技术达人在分享的时候,能够真实的 ...

  8. C++的ch1&ch2的整理

    C++:带泪的C,意指学C语言的时候没有好好学,在学习此门课时会流下不学无术的泪水(仅对于我个人). 计算机程序语言的发展:机器语言[计算机可以识别的二进制指令]——>汇编语言[将机器指令转化为 ...

  9. BASH_SOURCE

    在C/C++中,__FUNCTION__常量记录当前函数的名称.有时候,在日志输出的时候包含这些信息是非常有用的.而在Bash中,同样有这样一个常量FUNCNAME,但是有一点区别是,它是一个数组而非 ...

  10. 其他封装ui的平台

      mint平台 http://mint-ui.github.io/#!/zh-cn