爬取的页面为https://book.qidian.com/info/1010734492#Catalog

爬取的小说为凡人修仙之仙界篇,这边小说很不错。

正文的章节如下图所示

其中下面的章节为加密部分,现在暂时无法破解加密的部分。ε=(´ο`*)))唉..

下面直接上最核心的代码(位于spiders中的核心代码)

# -*- coding: utf-8 -*-
import scrapy from qidian.items import QidianItem
import enum
class Qidian1Spider(scrapy.Spider):
name = 'qidian1'
allowed_domains = ['qidian.com']
start_urls = ['https://book.qidian.com/info/1010734492#Catalog']
def parse(self, response):
#div[@class="volume"][1或者2或者3或者4]中的数值,这些数值自定义一个变量替代,目前一共是4个部分,随着后续章节的增加,会出现第五部分或者第六部分 依次累加
###div[@class="volume"]["num"] ,num是自定义的变量,你可以换成自己想要的abc或者bb等变量,把这些变量放进去,就能得到所有章节的title??(不知道为什么)
for aa in response.xpath(
'//div[@class="volume-wrap"]/div[@class="volume"]["'
'这里填啥都行,不填就报错,或者去掉class=volume后面的这个中括号就得不到a标签中的标题,我也不知道什么原因!!!"]'
'/ul[@class="cf"]/li'): title=aa.xpath("a/text()").extract()
link=aa.xpath("a/@href").extract()
for new_link in link:
new_links="https:"+str(new_link)
yield scrapy.Request(new_links, callback=self.parse_content) def parse_content(self,response):
for bb in response.xpath('//div[@class="main-text-wrap"]'):
title=bb.xpath('//div[@class="text-head"]/h3[@class="j_chapterName"]/text()').extract()
content = bb.xpath('//div[@class="read-content j_readContent"]/p/text()').extract()
kong_list=list(''.join(title))
item=QidianItem()
item['title']=title
       item['content']=content
yield item

在items.py中的核心代码为

# -*- 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 QidianItem(scrapy.Item): title = scrapy.Field()
link = scrapy.Field()
content = scrapy.Field()

在pipelines.py中的核心代码为

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

import json
class QidianPipeline(object):
def process_item(self, item, spider):
return item
#初始化时指定要操作的文件
def __init__(self):
self.file = open('item.json', 'w', encoding='utf-8')
# 存储数据,将 Item 实例作为 json 数据写入到文件中
def process_item(self, item, spider): lines = json.dumps(dict(item), ensure_ascii=False) + '\n'
self.file.write(lines)
return item
# 处理结束后关闭 文件 IO 流
def close_spider(self, spider):
self.file.close()

我们最后得到的结果为像这种的。

........

使用scrapy爬虫,爬取起点小说网的案例的更多相关文章

  1. 使用scrapy爬虫,爬取17k小说网的案例-方法一

    无意间看到17小说网里面有一些小说小故事,于是决定用爬虫爬取下来自己看着玩,下图这个页面就是要爬取的来源. a 这个页面一共有125个标题,每个标题里面对应一个内容,如下图所示 下面直接看最核心spi ...

  2. 使用scrapy爬虫,爬取17k小说网的案例-方法二

    楼主准备爬取此页面的小说,此页面一共有125章 我们点击进去第一章和第一百二十五章发现了一个规律 我们看到此链接的  http://www.17k.com/chapter/271047/6336386 ...

  3. Python的scrapy之爬取顶点小说网的所有小说

    闲来无事用Python的scrapy框架练练手,爬取顶点小说网的所有小说的详细信息. 看一下网页的构造: tr标签里面的 td 使我们所要爬取的信息 下面是我们要爬取的二级页面 小说的简介信息: 下面 ...

  4. 利用Python网络爬虫爬取学校官网十条标题

    利用Python网络爬虫爬取学校官网十条标题 案例代码: # __author : "J" # date : 2018-03-06 # 导入需要用到的库文件 import urll ...

  5. python3爬虫-使用requests爬取起点小说

    import requests from lxml import etree from urllib import parse import os, time def get_page_html(ur ...

  6. scrapy实例:爬取中国天气网

    1.创建项目 在你存放项目的目录下,按shift+鼠标右键打开命令行,输入命令创建项目: PS F:\ScrapyProject> scrapy startproject weather # w ...

  7. Python的scrapy之爬取链家网房价信息并保存到本地

    因为有在北京租房的打算,于是上网浏览了一下链家网站的房价,想将他们爬取下来,并保存到本地. 先看链家网的源码..房价信息 都保存在 ul 下的li 里面 ​ 爬虫结构: ​ 其中封装了一个数据库处理模 ...

  8. python利用scrapy框架爬取起点

    先上自己做完之后回顾细节和思路的东西,之后代码一起上. 1.Mongodb 建立一个叫QiDian的库,然后建立了一个叫Novelclass(小说类别表)Novelclass(可以把一级类别二级类别都 ...

  9. 使用scrapy爬虫,爬取今日头条搜索吉林疫苗新闻(scrapy+selenium+PhantomJS)

    这一阵子吉林疫苗案,备受大家关注,索性使用爬虫来爬取今日头条搜索吉林疫苗的新闻 依然使用三件套(scrapy+selenium+PhantomJS)来爬取新闻 以下是搜索页面,得到吉林疫苗的搜索信息, ...

随机推荐

  1. Python百题计划

    一.基础篇 想要像类似执行shell脚本一样执行Python脚本,需要在py文件开头加上什么?KEY:#!/usr/bin/env python Python解释器在加载 .py 文件中的代码时,会对 ...

  2. SpringMVC 实现文件上传与下载,并配置异常页面

    目录 上传文件的表单要求 Spring MVC实现上传文件 需要导入的jar包 配置MultipartResolver解析器 编写接收上传文件的控制器 Spring MVC实现文件下载 下载文件时的h ...

  3. SpringMVC 接受请求参数、作用域传值

    目录 原生servlet接收参数 Spring MVC最基础的参数获取 接收基本数据类型参数 方法参数列表和请求参数不一致的处理方式 接收对象引用数据类型 接收复选框这种多个同名的参数 接收obj.f ...

  4. Docker 部署Confluence15.2

    一.数据库准备 数据库版本:5.7 这里数据库并没有采用docker镜像方式,而是选择已有数据库.至于数据库安装这里不再说明. 注:我这里安装confluence时,需要在下面配置数据库信息时,在数据 ...

  5. Android 1.7 中不支持 lambda 表达式

    Error:(129, 32) 错误: -source 1.7 中不支持 lambda 表达式 (请使用 -source 8 或更高版本以启用 lambda 表达式) lambda expressio ...

  6. 记录BigInteger犯过的一个错误

    2019年4月18号,面试遇到的面试题,当时做错了,纪念下. public class StrTest { public static void main(String[] args) { BigIn ...

  7. MyBatis-Plus

    一.通用SQL 1.简介:(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 2.定义Javabean中成员变量所使用的的类型: ...

  8. Linux学习之路2-linux系统烧写

    fastboot烧写方式 准备工作: 硬件– 串口线连接开发板串口con3到PC的串口– OTG线连接开发板的OTG接口和PC的USB接口软件– 串口工具(超级终端),默认波特率为115200– 烧写 ...

  9. 「Algospot」津巴布韦ZIMBABWE

    同时考验对状压DP和数位DP的理解: 传送门:$>here<$ 题意 给出一个数字$e$,现在对$e$通过$m$进行变换得到$x$:变换的要求是:1.只能改变原数字$e$各个数位的顺序(可 ...

  10. pycharm的Database连接新的Mysql5.7报错[08001]

    在URL的后面增加参数: ?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC 解决. 原因是虽然mysql5.7的s ...