使用scrapy 抓取顶点小说
# -- 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 抓取顶点小说相关推荐
- Scrapy爬取顶点小说网
Scrapy爬取小说 爬取目标:顶点小说网 1.Scrapy的安装 pip install scrapy 2.Scrapy的介绍 创建项目 scrapy startproject xxx xxx项目名 ...
- JAVA爬虫进阶之springboot+webmagic抓取顶点小说网站小说
闲来无事最近写了一个全新的爬虫框架WebMagic整合springboot的爬虫程序,不清楚WebMagic的童鞋可以先查看官网了解什么是Webmagic,顺便说说用springboot时遇到的一些坑 ...
- Scrapy爬取顶点小说
一.目标地址:www.23us.so/ 二.准备工作 1.开发环境 MacOS + PyCharm + Python3.5.3 + Scrapy + MySQL 2.安装Scrapy和MySQL自行解 ...
- scrapy抓取盗墓笔记小说
scrapy startproject Daomu cd Daomu/ scrapy genspider daomu www.daomubiji.comom
- 用Python爬取顶点小说网站中的《庆余年》思路参考——记一次不成功的抓取
目的:用python爬虫抓取顶点小说网站中的<庆余年>小说内容个,并保存为txt格式文件. 环境:Win10系统,Anaconda3 + PyCharm, python3.6版本 思路:( ...
- Python的scrapy之爬取顶点小说网的所有小说
闲来无事用Python的scrapy框架练练手,爬取顶点小说网的所有小说的详细信息. 看一下网页的构造: tr标签里面的 td 使我们所要爬取的信息 下面是我们要爬取的二级页面 小说的简介信息: 下面 ...
- Python网络爬虫(九):爬取顶点小说网站全部小说,并存入MongoDB
前言:本篇博客将爬取顶点小说网站全部小说.涉及到的问题有:Scrapy架构.断点续传问题.Mongodb数据库相关操作. 背景: Python版本:Anaconda3 运行平台:Windows IDE ...
- scrapy-redis分布式爬虫全站爬取顶点小说网
scrapy-redis是一个基于redis的scrapy组件,通过它可以快速实现简单分布式爬虫程序,该组件本质上提供了三大功能: scheduler - 调度器 dupefilter - URL去重 ...
- Scrapy 爬取盗墓笔记小说
Scrapy 爬取盗墓笔记小说 应用 Scrapy框架 爬取盗墓笔记小说数据,存入MongoDB 数据库. # settings 配置mongodb MONGODB_HOST = '127.0.0.1 ...
最新文章
- 社会丨中外大学校长:人工智能时代 未来高校教什么
- Erlang列表操作里面的变量绑定规则
- Freemarker条件判断
- 搭建Hexo博客(一)-创建Hexo环境
- animation css逐渐消除,css3动画控制元素淡入淡出显示效果
- 【深度学习】12张高清思维导图,总结深度学习
- C#获得Access数据库中的表名,以及根据表名获取字段名
- WPF仿微信界面发送消息简易版
- oracle数据表通过使用SYS_GUID()自动生成唯一主键
- 2.3线性表的链式表示和实现(静态链表)
- java移位运算符详解_java移位运算符详解
- R语言:时间序列ARIMA模型使用
- 小程序直播送礼物svga展示
- python调用子函数_类中的Python调用函数
- 环境微生物复习题及答案
- 微软阿根廷服务器解锁,XBOX阿根廷服购买教程
- android添加浮动组件,添加悬浮操作按钮 | Android 开发者 | Android Developers
- Java菜鸟学习日记7
- android 目录作用,Android中各级目录的作用说明
- Hyperic HQ简介