scrapy 爬取小说
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 爬取小说的更多相关文章
- Scrapy爬取小说简单逻辑
Scrapy爬取小说简单逻辑 一 准备工作 1)安装Python 2)安装PIP 3)安装scrapy 4)安装pywin32 5)安装VCForPython27.exe ........... 具体 ...
- scrapy爬取小说盗墓笔记
# -*- coding: utf-8 -*- import scrapy from daomu.items import DaomuItem class DaomuspiderSpider(scra ...
- 小说免费看!python爬虫框架scrapy 爬取纵横网
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 风,又奈何 PS:如有需要Python学习资料的小伙伴可以加点击下方 ...
- 以豌豆荚为例,用 Scrapy 爬取分类多级页面
本文转载自以下网站:以豌豆荚为例,用 Scrapy 爬取分类多级页面 https://www.makcyun.top/web_scraping_withpython17.html 需要学习的地方: 1 ...
- scrapy 爬取纵横网实战
前言 闲来无事就要练练代码,不知道最近爬取什么网站好,就拿纵横网爬取我最喜欢的雪中悍刀行练手吧 准备 python3 scrapy 项目创建: cmd命令行切换到工作目录创建scrapy项目 两条命 ...
- Python实战项目网络爬虫 之 爬取小说吧小说正文
本次实战项目适合,有一定Python语法知识的小白学员.本人也是根据一些网上的资料,自己摸索编写的内容.有不明白的童鞋,欢迎提问. 目的:爬取百度小说吧中的原创小说<猎奇师>部分小说内容 ...
- Scrapy爬取美女图片 (原创)
有半个月没有更新了,最近确实有点忙.先是华为的比赛,接着实验室又有项目,然后又学习了一些新的知识,所以没有更新文章.为了表达我的歉意,我给大家来一波福利... 今天咱们说的是爬虫框架.之前我使用pyt ...
- 【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神
原文:教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http:/ ...
- scrapy爬取西刺网站ip
# scrapy爬取西刺网站ip # -*- coding: utf-8 -*- import scrapy from xici.items import XiciItem class Xicispi ...
随机推荐
- Google推出了Python最牛逼的编辑器
环境配置对于大多数人来说都是拦路虎,我们小白往往不知道: 怎么正确的安装 不知道选择什么 怎么安装常用的第三方库 ... Google推出了一个在线的网站 https://colab.research ...
- [Unity优化]批处理01:Statistics窗口
参考链接: https://docs.unity3d.com/Manual/RenderingStatistics.html unity版本:2018.3.8 新建一个场景,只保留Main Camer ...
- mysql 动态行转列
表结果:create table user( id int , username ), create_time datetime, type int ) insert into user (`id`, ...
- mvc后台上传
public ActionResult AddEnclosure(HttpPostedFileBase Filedata) { if (Filedata == null || string.IsNul ...
- Docker 多主机方案
利用OpenVSwitch构建多主机Docker网络 [编者的话]当你在一台主机上成功运行Docker容器后,信心满满地打算将其扩展到多台主机时,却发现前面的尝试只相当于写了个Hello World的 ...
- Swoft 图片上传与处理
上传 在Swoft下通过 \Swoft\Http\Message\Server\Request -> getUploadedFiles()['image'] 方法可以获取到一个 Swoft\Ht ...
- Spring的回滚问题
再说下声明式事务和注解事务回滚的原理:当被切面切中或者是加了注解的方法中抛出了RuntimeException异常时,Spring会进行事务回滚.默认情况下是捕获到方法的RuntimeExceptio ...
- Python module ---- argparse
argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块.argparse模块的作用是用于解析命令行参数,程序只需定义好它要求的参数,然后argpars ...
- 微信小程序自定义组件实现
官方从 1.6.3 开始对于自定义组件这一块有了比较大的变动,首先比较明显的感觉就是文档比以前全多了,有木有!,现在小程序支持简洁的组件化编程,可以将页面内的功能模块抽象成自定义组件,以便在不同的页面 ...
- 004之MFCSocket同步编程(指针机制)
异步与同步通信相比较,前者是非阻塞模式,后者是阻塞模式.有关两者差异在此博主中有详细讲解,推荐:https://www.cnblogs.com/wzsblogs/p/4671559.html. 采用同 ...