Python scrapy爬取起点中文网小说榜单

 更新时间:2021年06月13日 10:05:13   作者:超哥--  
爬虫的基础内容已经全部学玩,博主决定想着更加标准化以及实用能力更强的scrapy进发,今天记录自己第一个scrapy爬虫项目. scrapy爬取起点中文网24小时热销榜单,需要的朋友可以参考下

一、项目需求

爬取排行榜小说的作者,书名,分类以及完结或连载

二、项目分析

目标url:“https://www.qidian.com/rank/hotsales?style=1&page=1

在这里插入图片描述

通过控制台搜索发现相应信息均存在于html静态网页中,所以此次爬虫难度较低。

在这里插入图片描述

通过控制台观察发现,需要的内容都在一个个li列表中,每一个列表代表一本书的内容。

在这里插入图片描述

在li中找到所需的内容

在这里插入图片描述

找到第两页的url
“https://www.qidian.com/rank/hotsales?style=1&page=1”
“https://www.qidian.com/rank/hotsales?style=1&page=2”
对比找到页数变化
开始编写scrapy程序。

三、程序编写

创建项目太简单,不说了

1.编写item(数据存储)

import scrapy

class QidianHotItem(scrapy.Item):
    name = scrapy.Field() #名称
    author = scrapy.Field() #作者
    type = scrapy.Field() #类型
    form= scrapy.Field() #是否完载

2.编写spider(数据抓取(核心代码))

#coding:utf-8

from scrapy import Request
from scrapy.spiders import Spider
from ..items import QidianHotItem
#导入下需要的库

class HotSalesSpider(Spider):#设置spider的类
    name = "hot" #爬虫的名称
    qidian_header={"user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"} #设置header
    current_page = 1 #爬虫起始页
    def start_requests(self): #重写第一次请求
        url="https://www.qidian.com/rank/hotsales?style=1&page=1"
        yield Request(url,headers=self.qidian_header,callback=self.hot_parse)
		#Request发起链接请求
		#url:目标url
		#header:设置头部(模拟浏览器)
		#callback:设置页面抓起方式(空默认为parse)
    def hot_parse(self, response):#数据解析
        #xpath定位
        list_selector=response.xpath("//div[@class='book-mid-info']")
        #获取所有小说
        for one_selector in list_selector:
            #获取小说信息
            name=one_selector.xpath("h4/a/text()").extract()[0]
            #获取作者
            author=one_selector.xpath("p[1]/a[1]/text()").extract()[0]
            #获取类型
            type=one_selector.xpath("p[1]/a[2]/text()").extract()[0]
            # 获取形式
            form=one_selector.xpath("p[1]/span/text()").extract()[0]

            item = QidianHotItem()
            #生产存储器,进行信息存储
            item['name'] = name
            item['author'] = author
            item['type'] = type
            item['form'] = form

            yield item #送出信息

            # 获取下一页URL,并生成一个request请求
            self.current_page += 1
            if self.current_page <= 10:#爬取前10页
                next_url = "https://www.qidian.com/rank/hotsales?style=1&page="+str(self.current_page)
                yield Request(url=next_url,headers=self.qidian_header,callback=self.hot_parse)


    def css_parse(self,response):
        #css定位
        list_selector = response.css("[class='book-mid-info']")
        for one_selector in list_selector:
            # 获取小说信息
            name = one_selector.css("h4>a::text").extract()[0]
            # 获取作者
            author = one_selector.css(".author a::text").extract()[0]
            # 获取类型
            type = one_selector.css(".author a::text").extract()[1]
            # 获取形式
            form = one_selector.css(".author span::text").extract()[0]
            # 定义字典

            item=QidianHotItem()
            item['name']=name
            item['author'] = author
            item['type'] = type
            item['form'] = form
            yield  item

3.start.py(代替命令行)

在爬虫项目文件夹下创建start.py。

在这里插入图片描述

from scrapy import cmdline
#导入cmd命令窗口
cmdline.execute("scrapy crawl hot -o hot.csv" .split())
#运行爬虫并生产csv文件

出现类似的过程代表爬取成功。

在这里插入图片描述

hot.csv

在这里插入图片描述

总结

本次爬虫内容还是十分简单的因为只用了spider和item,这几乎是所有scrapy都必须调用的文件,后期还会有middlewarse.py,pipelines.py,setting.py需要编写和配置,以及从javascript和json中提取数据,难度较大。

到此这篇关于Python scrapy爬取起点中文网小说榜单的文章就介绍到这了,更多相关Python爬取起点中文网内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于torch.where和布尔索引的速度比较

    基于torch.where和布尔索引的速度比较

    今天小编就为大家分享一篇基于torch.where和布尔索引的速度比较,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python 中的 copy()和deepcopy()

    Python 中的 copy()和deepcopy()

    这篇文章主要介绍了Python 中的 copy()和deepcopy(),下面详细介绍该内容并附上详细代码,需要的朋友可以参考一下文章的具体内容,希望对你有所帮助
    2021-11-11
  • AI:如何训练机器学习的模型

    AI:如何训练机器学习的模型

    这篇文章主要介绍了是如何进行机器学习的模型的训练,全文逻辑清晰,简单易懂,如果您正在学习机器学习那么可以参考下,说不定会有不一样的收货
    2021-04-04
  • Python中os和shutil模块实用方法集锦

    Python中os和shutil模块实用方法集锦

    这篇文章主要介绍了Python中os和shutil模块实用方法集锦,需要的朋友可以参考下
    2014-05-05
  • python中类的属性和方法介绍

    python中类的属性和方法介绍

    在本篇内容里小编给大家整理了关于python中类的属性知识点以及使用方法介绍,需要的朋友们参考下。
    2018-11-11
  • python实现自动化上线脚本的示例

    python实现自动化上线脚本的示例

    今天小编就为大家分享一篇python实现自动化上线脚本的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • 在Django中实现添加user到group并查看

    在Django中实现添加user到group并查看

    今天小编就为大家分享一篇在Django中实现添加user到group并查看,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • python关于字典及遍历的常用方法

    python关于字典及遍历的常用方法

    这篇文章主要介绍了python关于字典及遍历的常用方法,字典的键可以是字符串、整数、元组或字典。字典的值也可以是字符串、整数,文章围绕主题展开更多详细的内容,需要的小伙伴可以参考一下
    2022-06-06
  • python使用adbapi实现MySQL数据库的异步存储

    python使用adbapi实现MySQL数据库的异步存储

    这篇文章主要为大家详细介绍了python使用adbapi实现MySQL数据库的异步存储,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • Python读写/追加excel文件Demo分享

    Python读写/追加excel文件Demo分享

    今天小编就为大家分享一篇Python读写/追加excel文件Demo,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05

最新评论