博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
爬虫入门----小说下载(静态网页的文字爬取)
阅读量:5114 次
发布时间:2019-06-13

本文共 2940 字,大约阅读时间需要 9 分钟。

小说下载

工具

  Python3.6 + +

  PS:点击 Requests 或 BeautifulSoup 可查看对应中文文档

任务

  通过Python的爬虫下载一本小说。

  此次爬取的网站为 

分析

  首先我们随便打开一个小说打开一章看看

  如:斗罗大陆的  (url:http://www.kbiquge.com/104_104216/28964753.html)

  

   图一

  我们可以使用requests来获取一下页面内容(这个极少的代码就不贴了。大家动手一下哈)

  

  图二

  可以正常获取。那这个格式因为是源代码,所以有大量的非小说内容。

  在这里看源代码 emmm 确实很难受。Chrome 页面内右键检查,或直接F12可以动态查看修改源代码(其他浏览器同理)

  接下来我们使用BeautiSoup来获取我们需要的部分(以下是内容部分,标题同理可获取)

1 import re 2 import requests as req 3 from bs4 import BeautifulSoup as bs 4  5 url = 'http://www.kbiquge.com/104_104216/28964753.html' 6  7 r = req.get(url) 8 text = r.content.decode('gbk') 9 b = bs(text)10 11 # 数据清洗12 # 以下步骤可以自行逐步执行,以便熟悉其作用13 content = b.find_all(id='content') # 获取id为content的标签14 content = content[0].text # 清除html标签15 content = re.sub(u'[\u3000, \xa0]', '', content).replace(' ', '') # 清理空格16 content = content.replace('\n\r', '') # 清楚多余换行回车17 print(content)

 

  

图三

  代码结合如下

1 import re 2 import requests as req 3 from bs4 import BeautifulSoup as bs 4  5 url = 'http://www.kbiquge.com/104_104216/28964753.html' 6  7 r = req.get(url) 8 text = r.content.decode('gbk') # 防止中文乱码 9 b = bs(text)10 11 # 获取标题并截取12 title = b.find_all('h1')[0].text[1:]13 14 # 数据清洗15 # 以下步骤可以自行逐步执行,以便熟悉其作用16 content = b.find_all(id='content') # 获取id为content的标签17 content = content[0].text # 清除html标签18 content = re.sub(u'[\u3000, \xa0]', '', content).replace(' ', '') # 清理空格19 content = content.replace('\n\r', '') # 清楚多余换行回车20 21 # 整合22 content = title + '\n' + content +'\n\n' # 将标题和内容整合

 

  接下来我们来看看

图四

  目录这里我采用正则的方式获取标题和 url(详情了解可以查看文档)

  

1 import re 2 import requests as req 3 from bs4 import BeautifulSoup as bs 4  5 list_url = 'http://www.kbiquge.com/104_104216/' 6 r = req.get(list_url) 7 b = bs(r.content.decode('gbk')) 8 text = b.find_all(href=re.compile('/104_104216/')) # 使用正则的方式获取链接列表 9 for each in text: # 遍历列表打印查看10     print(each.string + ' ' + each.get('href'))

 

图五

  基本上就这么多。接下来就是依次获取目录 URL 然后再下载每章小说即可。

  关于章节 URL 问题,可能有人会说应该都是有序的,仔细观察可能发现有非连续的。故依次获取即可

编码

  

1 import re 2 import requests 3 from bs4 import BeautifulSoup 4  5 list_url = 'http://www.kbiquge.com/104_104216/' 6  7 r = requests.get(list_url) 8 b = BeautifulSoup(r.content.decode('gbk')) 9 t = b.find_all(href = re.compile('/104_104216/'))10 list_len = len(t)11 i = 112 print('Strat Download:')13 for each in t:14     print('正在下载第' + str(i) + '章,共' + str(list_len) + '章')15     url = list_url + each.get('href')[12:]16     r = requests.get(url)17     b = BeautifulSoup(r.content.decode('gbk'))18 19     # 获取标题并截取20     title = b.find_all('h1')[0].text[1:]21 22     # 数据清洗23     content = b.find_all(id='content')[0].text # 清除html标签24     content = re.sub(u'[\u3000, \xa0]', '', content).replace(' ', '').replace('\n\r', '')25     content = title + '\n' + content +'\n\n' # 将标题和内容整合26     with open('斗罗大陆.txt', 'a', encoding='utf-8') as f:27         f.write(content)28     i = i+129 print('Download successful!')

 

转载于:https://www.cnblogs.com/qq188380780/p/10159263.html

你可能感兴趣的文章
[常微分方程]Lecture 2: 欧拉数值方法及推广
查看>>
第九届全国大学生数学竞赛(江西赛区)数学类获奖学生名单
查看>>
《大型网站技术架构》读书笔记之七:随需应变之网站的可扩展架构
查看>>
剑指Offer面试题:28.连续子数组的最大和
查看>>
面向对象之继承
查看>>
一天一首现代诗
查看>>
利用React/anu编写一个弹出层
查看>>
飞信安装
查看>>
Bitmap 多语言实现及应用
查看>>
浏览器的加载顺序与页面性能优化
查看>>
树---数据结构
查看>>
ajax用get刷新页面元素在IE下无效解决~~
查看>>
[.NET] : 设定Windows Service启动类型
查看>>
Log4NET SQL配置
查看>>
Linux网络配置
查看>>
分享精心收藏的前台开发素材网站,都是干货
查看>>
Shell脚本修改Nginx upstream配置文件
查看>>
转_博弈论知识汇总
查看>>
进程的状态
查看>>
游戏外挂基本原理及实现
查看>>