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 ...
随机推荐
- HTML中的坐标系及其在MouseEvent和元素Box中的应用
HTML中的坐标系及其在MouseEvent和元素中的应用 HTML有四个坐标系统: Screen, Page,Client和offset, 用于描述DOM元素的Box尺寸和MouseEvent中的位 ...
- Android给控件添加默认点击效果
Android控件点击效果 Android中Button控件是有点击效果的,但是像TextView.ImageView.各种Layout是没有点击效果的,给TextView设置点击事件后,加个点击效果 ...
- Python数据类型的内置函数之tuple(元组),dict(字典),set(集合)
Python数据类型内置函数 - str(字符串) - list(列表) - tuple(元组) - dict(字典) - set(收集) tuple(元组)的操作 - (count)统计元组中元素出 ...
- JAVA 8 函数式接口--Consumer
从JDK8开始java支持函数式编程,JDK也提供了几个常用的函数式接口,这篇主要介绍Consumer接口.文本介绍的顺序依次为: 源码介绍 使用实例 jdk内对Consumer的典型使用 扩展类介绍 ...
- Nagios Email告警 发不了,可能是 /var/spool/mqueue nagios用户没权限
Nagios邮件报警 Nagios邮件报警 准备 yum - y install ntp ntpdate time.windows.com 同步时间,否则无法发送邮件 yum - ...
- leetcode每日刷题计划-简单篇day7
还没有背单词,头晕脑胀 Num 66 加一 Plus One 注意就是进位的时候最后一位,为了省两句代码,那几个语句顺序写反覆盖的乱七八糟 vector头部插入(a.begin(),被插入的数) 如果 ...
- py库:numpy
http://www.numpy.org/ numpy官网 http://cwiki.apachecn.org/pages/viewpage.action?pageId=10030181 scikit ...
- MySQL表数据的增删改查
1.增 INSERT INTO tb VALUES(v1,v2,v3...); INSERT INTO tb (field1,field2...) VALUES(v1,v2...); INSERT I ...
- [C#]打包项目[转]
原文:https://www.cnblogs.com/danyu/p/7243706.html 加入自定义操作:https://blog.csdn.net/ristal/article/details ...
- 如何用jquery获取form表单的值
$(function(){ $('.btn').click(function(){ alert($('#form').serialize()); }) }) 这样就获取到了 #form的值.