爬取小说数据

  • 效果
  • 网页分析
    • 网页网址分析
    • 书内容位置分析
    • 不同书内容位置分析
  • 将内容存到Excel
  • 完整代码

效果

网页分析

网页网址分析



对比我们可以发现,不同的网页只有后边的数字不一样。
得到前10页的网址:

urls = ['https://www.qidian.com/all/page{}/'.format(str (i)) for i in range(1,11)]

书内容位置分析



对比我们可以得到页面上不同的小说,都是在同一个<ul><li>里边。
得ul到的XPath后//*[@id="book-img-text"]/ul 在后边选择li 即可

#选择 <ul>节点中的所有《li>节点infos = selector.xpath('//*[@id="book-img-text"]/ul/li')

不同书内容位置分析

第一本书的标题的Xpath://*[@id="book-img-text"]/ul/li[1]/div[2]/h4/a

第二本书的标题的Xpath://*[@id="book-img-text"]/ul/li[2]/div[2]/h4/a

我们发现只有 ==li[ ]==中的小标不一样,于是有:

title = info.xpath('//*[@id="book-img-text"]/ul/li['+str(i)+']/div[2]/h4/a/text()')[0]

通过i的变化来达到切换的目的。

将内容存到Excel

需要使用第三方库:

pip install wlwt

使用步骤:

  1. 导入库:import xlwt
  2. 创建Worbook 对象,并指定编码:book = xlwt.Workbook(encoding='utf-8')
  3. 添加Sheet :sheet = book.add_sheet('novels')
  4. 向Sheet 的Cell(1,1)位置添加文本:sheet.write(1,1,'世界,你好')
  5. 保存文件:book.save('novels.xls')

完整代码

import requests
from lxml import etree
import  xlwt
import  timeheaders = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
'Host' : 'www.qidian.com',
'Cookie':'_ga_PFYW0QLV3P=GS1.1.1629617197.2.1.1629617333.0'
}#//*[@id="book-img-text"]/ul/li[2]/div[2]/h4/a
def getOnePage(url):html = requests.get(url, headers=headers, allow_redirects=False)selector = etree.HTML(html.text)#选择 <ul>节点中的所有《li>节点infos = selector.xpath('//*[@id="book-img-text"]/ul/li')print(infos)result = []i = 1pre = '//*[@id="book-img-text"]/ul/li['for info in infos:# 注意的地方一 后边加[0]才能的字符串style_1 = info.xpath('//*[@id="book-img-text"]/ul/li['+str(i)+']/div[2]/p[1]/a[2]/text()')[0]style_2 = info.xpath('//*[@id="book-img-text"]/ul/li['+str(i)+']/div[2]/p[1]/a[3]/text()')[0]# 提取标题title = info.xpath('//*[@id="book-img-text"]/ul/li['+str(i)+']/div[2]/h4/a/text()')[0]# 提取作者author = info.xpath('//*[@id="book-img-text"]/ul/li['+str(i)+']/div[2]/p[1]/a[1]/text()')[0]# 风格style = style_1 +'.'+style_2# 完成度complete = info.xpath('//*[@id="book-img-text"]/ul/li['+str(i)+']/div[2]/p[1]/span/text()')[0]#简介introduce = info.xpath('//*[@id="book-img-text"]/ul/li['+str(i)+']/div[2]/p[2]/text()')[0]# 创建一个字典对象存入data = { 'title':title,'author':author,'style':style,'complete':complete,'introduce':introduce}result.append(data)# 换到下一本书i+=1print(result)return result#
header = ['标题','作者','类型','完成度','介绍']book = xlwt.Workbook(encoding='utf-8')sheet = book.add_sheet('novels')for h in range(len(header)):sheet.write(0,h,header[h])#getOnePage('https://www.qidian.com/all/')
# 注意的地方二  /不能少
urls = ['https://www.qidian.com/all/page{}/'.format(str (i)) for i in range(1,11)]
i=1
#urls = ['https://www.qidian.com/all/']
for url in urls:novels = getOnePage(url)print(novels)for novel in novels:print(novel)time.sleep(0.1)sheet.write(i,0,novel['title'])sheet.write(i, 1, novel['author'])sheet.write(i, 2, novel['style'])sheet.write(i, 3, novel['complete'])sheet.write(i, 4, novel['introduce'])i+=1
book.save('novels.xls')


还不知道要看什么小说嘛?爬取小说网站前10页的小说数据分析一波相关推荐

  1. 爬虫入门(四)——Scrapy框架入门:使用Scrapy框架爬取全书网小说数据

    为了入门scrapy框架,昨天写了一个爬取静态小说网站的小程序 下面我们尝试爬取全书网中网游动漫类小说的书籍信息. 一.准备阶段 明确一下爬虫页面分析的思路: 对于书籍列表页:我们需要知道打开单本书籍 ...

  2. 利用CnkiSpider包快速爬取知网文献信息

    CnkiSpider使用指南(by@zemengchuan) GitHub链接:https://github.com/zemengchuan/CnkiSpider 用途: CnkiSpider可以通过 ...

  3. 一日一技:爬取薄荷网食物热量

    本文仅供学习参考. 薄荷健康秉承"为年轻家庭提供更健康.更美味的食品和饮料"的公司使命,为8000万用户提供个性化智能营养处方与一站式健康解决方案,致力于成为年轻家庭首选的健康生活 ...

  4. python爬取小说写入txt_对新笔趣阁小说进行爬取,保存和下载!这就是Python的魅力...

    原标题:对新笔趣阁小说进行爬取,保存和下载!这就是Python的魅力 以前挺爱在笔趣阁看小说的(老白嫖怪了) 现在学了一点爬虫技术,就自然而然的想到了爬取笔趣阁的小说 也算锻炼一下自己的技术,就以新笔 ...

  5. python 录制网易云登陆_小白都能看懂:Python爬取网易云音乐下载教程

    配置基础 Python Selenium Chrome浏览器(其它的也可以,需要进行相应的修改) 分析 如果爬取过网易云的网站的小伙伴都应该知道网易云是有反爬取机制的,POST时需要对一些信息的参数进 ...

  6. scrapy实现爬取全书网小说到Mysql数据库(附代码)

    前言 本篇文章实现python的scrapy框架爬取全书网小说,scrapy框架的安装我在这里就不在赘述了,建议window用户使用anaconda安装,这里比较省心一些.运行环境python3(实际 ...

  7. Python爬取全书网小说全文——正则表达式的应用

    1. 引言 各位读者新年好,今天给大家带来的案例是爬取全书网小说全文,主要用到了正则表达式.我们知道,正则表达式一般用来进行格式化的精确匹配,用来爬取多文本的内容非常方便.本次采用面向过程的方法,理解 ...

  8. SpiderFlow平台v0.3.0初次使用并爬取薄荷网的热量和减法功效

    spider-flow 作为web爬虫他可以简单的说是新一代的爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫. 也就是说我们不用在刻意的为了一些数据就去学一下语言如python,我们只要画个 ...

  9. Python爬取返利网(今日值得买)数据

    双十一还没消停,双十二又来了.看返利网<今日值得买>的数据时时不断的在更新...... 1.爬取返利网的商品名,分类,推荐人,好评数和差评数 2.商品信息不断更新,查看页面源代码仅可以看见 ...

最新文章

  1. JDK17 要来了!会带来什么新特性?不好意思,我还在JDK7 踏步走...
  2. 打一针就可修复受损心脏,“癌症克星”CAR-T跨界疗法登上Science封面
  3. js、jquery实用小技巧集合
  4. linux cmake 安装mysql5.5.11,以及更高版本
  5. C++内部类访问外部类
  6. asp.net core部署到iis
  7. solidity语言介绍以及开发环境准备
  8. 白板推导系列Pytorch-线性判别分析(LDA)
  9. urllib 库的代替品 requests 的用法
  10. oracle异步sql,Oracle sqlplus登陆异步io错误
  11. Redis采用不同内存分配器碎片率对比
  12. 微软dpm服务器,使用 DPM 的 ReFS 卷在服务器中Windows Server 2016
  13. 什么是淘宝店铺SKU
  14. R语言数据读取以及数据保存
  15. Python 闯关之路一(语法基础)
  16. 如何支持RTSP播放H.265(HEVC)流
  17. 【人工智能】大脑传:人类大脑认识发展史
  18. 电商广告推荐系统案例
  19. Android实战开发——引导页面(ViewPager)篇
  20. 【Java高级程序设计学习笔记】数据库编程

热门文章

  1. 小红书去水印代码_小红书关键词排名如何进行优化
  2. python opencv如何读取本地视频并显示 cv2.VideoCapture()
  3. 为什么L1稀疏,L2平滑?
  4. linux——apache
  5. docke容器无法访问宿主主机的端口
  6. slam特征点深度 svd_SLAM初探:关于视觉SLAM的一些常识
  7. 忘记mysql登录密码怎么办
  8. Linux下安装RabbitMQ
  9. python中change是什么意思_Change是什么意思?
  10. python容器数据类型_python collections 容器数据类型