# -- coding: utf-8 --
import scrapy
from urllib import parse
from scrapy import Request
from ding.items import DingItem

scrapy spider爬取部分


#将要获取的网址
class DingdianSpider(scrapy.Spider):

name = 'dingdian'   #scrapy框架name
start_urls = ['http://www.x23us.com/'] #顶点小说网址#解析
def parse(self, response):title = response.xpath('/html/body/div[2]/ul/li/a/@href').extract()[1:12]#全部类型for i in title:#便利获取值,传入下一个解析函数yield Request(url=parse.urljoin(response.url,i), callback=self.parse_get)


#获取最大页数
def parse_get(self, response):
name = response.xpath(‘//*[@id=”pagelink”]/a[14]/text()’).extract()[0]
for i in range(1, int(name)):
if response.url != ‘http://www.x23us.com/quanben/1‘:
left_url = response.url[:-6]
right_url = response.url[-5:]
yield Request(left_url + str(i) + right_url, callback=self.get_parse)#每页的链接
else:
yield Request(parse.urljoin(response.url, str(i)), callback=self.get_parse)
#全本小说的类型与其他类型的url不一致,返回上一级函数重新匹配,在传入下一级函数中

#每章内容url和作者
def get_parse(self, response):
try:
article_url = response.xpath(‘//*[@id=”content”]/dd/table/tr/td/a/@href’).extract()[1]
author = response.xpath(‘//*[@id=”content”]/dd/table/tr/td/text()’).extract()[0]
yield Request(article_url, callback=self.page_list, meta={‘author’:author})#传入下一级函数
except:
pass

#每章标题和标题的url
def page_list(self,response):
title = response.xpath(‘//*[@id=”a_main”]/div/dl/dd/h1/text()’).extract()[0]
content_url = response.xpath(‘//*[@id=”at”]/tr/td/a/@href’).extract()[0]
yield Request(parse.urljoin(response.url, content_url), callback=self.content_html, meta={‘title’:title, ‘author’:response.meta[‘author’]})
#传入下一级函数

#解析每章的内容,从网页中抽取项目,清晰,验证你要抓取的数据进入items
def content_html(self, response):
item = DingItem()
title1 = response.xpath(‘//*[@id=”amain”]/dl/dd[1]/h1/text()’).extract()[0]
item[‘book’] = response.meta[‘title’]
item[‘article_title’] = title1
item[‘author’] = response.meta[‘author’]
# content_all =”
content_con = response.xpath(‘//*[@id=”contents”]/text()’).extract()
for i in content_con:
content_all = i.replace(‘\xa0’,”)
item[‘content’] = content_all
yield item

scrapy item 部分

#定义抓取的字段
import scrapy

class DingItem(scrapy.Item):
author = scrapy.Field()
article_title = scrapy.Field()
content = scrapy.Field()
book = scrapy.Field()
pass

scrapy pipelines部分

#存入PYmongo

import pymongo

class DingPipeline(object):
def init(self):
client = pymongo.MongoClient()
self.db = client[‘Dingdian’][‘xiaoshuo’]
def process_item(self, item, spider):
self.db.insert(dict(item))
return item

运行代码

from scrapy.cmdline import execute
execute([‘scrapy’, ‘crawl’, ‘dingdian’])

使用scrapy 抓取顶点小说相关推荐

  1. Scrapy爬取顶点小说网

    Scrapy爬取小说 爬取目标:顶点小说网 1.Scrapy的安装 pip install scrapy 2.Scrapy的介绍 创建项目 scrapy startproject xxx xxx项目名 ...

  2. JAVA爬虫进阶之springboot+webmagic抓取顶点小说网站小说

    闲来无事最近写了一个全新的爬虫框架WebMagic整合springboot的爬虫程序,不清楚WebMagic的童鞋可以先查看官网了解什么是Webmagic,顺便说说用springboot时遇到的一些坑 ...

  3. Scrapy爬取顶点小说

    一.目标地址:www.23us.so/ 二.准备工作 1.开发环境 MacOS + PyCharm + Python3.5.3 + Scrapy + MySQL 2.安装Scrapy和MySQL自行解 ...

  4. scrapy抓取盗墓笔记小说

    scrapy startproject Daomu cd Daomu/ scrapy genspider daomu www.daomubiji.comom

  5. 用Python爬取顶点小说网站中的《庆余年》思路参考——记一次不成功的抓取

    目的:用python爬虫抓取顶点小说网站中的<庆余年>小说内容个,并保存为txt格式文件. 环境:Win10系统,Anaconda3 + PyCharm, python3.6版本 思路:( ...

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

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

  7. Python网络爬虫(九):爬取顶点小说网站全部小说,并存入MongoDB

    前言:本篇博客将爬取顶点小说网站全部小说.涉及到的问题有:Scrapy架构.断点续传问题.Mongodb数据库相关操作. 背景: Python版本:Anaconda3 运行平台:Windows IDE ...

  8. scrapy-redis分布式爬虫全站爬取顶点小说网

    scrapy-redis是一个基于redis的scrapy组件,通过它可以快速实现简单分布式爬虫程序,该组件本质上提供了三大功能: scheduler - 调度器 dupefilter - URL去重 ...

  9. Scrapy 爬取盗墓笔记小说

    Scrapy 爬取盗墓笔记小说 应用 Scrapy框架 爬取盗墓笔记小说数据,存入MongoDB 数据库. # settings 配置mongodb MONGODB_HOST = '127.0.0.1 ...

最新文章

  1. 社会丨中外大学校长:人工智能时代 未来高校教什么
  2. Erlang列表操作里面的变量绑定规则
  3. Freemarker条件判断
  4. 搭建Hexo博客(一)-创建Hexo环境
  5. animation css逐渐消除,css3动画控制元素淡入淡出显示效果
  6. 【深度学习】12张高清思维导图,总结深度学习
  7. C#获得Access数据库中的表名,以及根据表名获取字段名
  8. WPF仿微信界面发送消息简易版
  9. oracle数据表通过使用SYS_GUID()自动生成唯一主键
  10. 2.3线性表的链式表示和实现(静态链表)
  11. java移位运算符详解_java移位运算符详解
  12. R语言:时间序列ARIMA模型使用
  13. 小程序直播送礼物svga展示
  14. python调用子函数_类中的Python调用函数
  15. 环境微生物复习题及答案
  16. 微软阿根廷服务器解锁,XBOX阿根廷服购买教程
  17. android添加浮动组件,添加悬浮操作按钮  |  Android 开发者  |  Android Developers
  18. Java菜鸟学习日记7
  19. android 目录作用,Android中各级目录的作用说明
  20. Hyperic HQ简介

热门文章

  1. 【头歌】汉诺塔(Hanoi)的递归算法
  2. 2.6 蒙哥马利乘法
  3. ?lower_case
  4. kotlin跨平台_探索Kotlin跨平台第1部分
  5. JavaScript进阶必会的手写功能(二)
  6. JAVA知识点梳理第四部分——Swing控件
  7. Docker守护式容器的创建和登录
  8. 【34】理解虚拟机:你在云上拿到的计算机是什么样的?
  9. 迅如疾风 PHPWind 6.3.2 测试手记
  10. 机器视觉——镜头知识整理