python爬虫下载小说
1.
from urllib.request import urlopen
from urllib import request
from bs4 import BeautifulSoup
from urllib.request import urlretrieve
from selenium import webdriver
import socket
import time,re
from docx import Document
from docx.oxml.ns import qn
def tackle(text):
#print(text)
for i in range(len(text)):
if(text[i:i+22] == '<div class="bookname">'):
for j in range(i+39,len(text)):
if (text[j] == '<'):
name = (text[i+39:j])
break
print(name)
break
for i in range(len(text)):
if(text[i:i+18] == '<div id="content">'):
text = text[i+18:]
break
for i in range(len(text)):
if(text[i:i+6] == '</div>'):
text = text[:i]
break
text = text.replace('…','')
text = text.replace('」','')
text = text.replace('「','')
text = text.replace('<br/><br/>','')
text = re.sub(r"\s+", "", text)#正则匹配去掉空格
save(name,text)
def save(name,text):
doc = Document()
doc.styles['Normal'].font.name = u'宋体'
doc.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
doc.add_paragraph(text)
#保存.docx文档
doc.save(name + '.docx')
def download(url):#下载网页
#获取HTML
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}
req = request.Request(url, headers=headers)
html = request.urlopen(req).read()
#保存HTML
file_name = 'text'
with open (file_name.replace('/','_')+".html","wb") as f:
f.write(html)
if __name__ == "__main__":
#url = ''
download(url)
with open('text'+str(i)+'.html', 'rb') as f:
Soup = str(BeautifulSoup(f.read(), 'html.parser'))
tackle(Soup)
2.
from urllib import request
from bs4 import BeautifulSoup
import re,codecs
def download(url,i=0):#下载网页
#获取HTML
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}
req = request.Request(url, headers=headers)
html = request.urlopen(req).read()
#保存HTML
file_name = i
with open ("{}.html".format(i),"wb") as f:
f.write(html)
with open('{}.html'.format(i), 'rb') as f:
Soup = str(BeautifulSoup(f.read(), 'html.parser')) #把html转化为string
return Soup
def save(name,txt): # 得到标题和正文之后,保存为txt
f = codecs.open("{}.txt".format(name),'w','utf-8')
f.write(txt)
def tackle(url,i):
Soup = download(url,i) # 获取字符串,字符串内容为整个网页
pattern_title = '
' #匹配,其中.代表匹配中间全部字符(除了换行)
mp = re.search(pattern_title,Soup) #正则搜索
title = mp.group()[12:-6] # group方法返回搜索结果的字符串形式,并把字符串中
去掉
start = Soup.find('
end = Soup.find('</p>
')
pattern_body = Soup[start+34:end] #标记正文位置
save(title+'.txt',pattern_body)
if name == "main":
Soup = download('path') # 小说目录网址
place = [substr.start() for substr in re.finditer('http://www.ncwxw.cc/0/298/8',Soup)] # 字符串匹配,确定所有章节的网址位置
place = place[13:] #预处理
website = [] #存储每一章的网址
for chapter in place:
website.append(Soup[chapter:chapter+36])
'''以上适用于每一章节网址无规律的情况,若有规律则可直接变址寻址'''
for i in range(1,1979):
tackle(website[i],i)
python爬虫下载小说的更多相关文章
- python爬虫之小说网站--下载小说(正则表达式)
python爬虫之小说网站--下载小说(正则表达式) 思路: 1.找到要下载的小说首页,打开网页源代码进行分析(例:https://www.kanunu8.com/files/old/2011/244 ...
- python爬虫下载文件
python爬虫下载文件 下载东西和访问网页差不多,这里以下载我以前做的一个安卓小游戏为例 地址为:http://hjwachhy.site/game/only_v1.1.1.apk 首先下载到内存 ...
- Python爬虫下载Bilibili番剧弹幕
本文绍如何利用python爬虫下载bilibili番剧弹幕. 准备: python3环境 需要安装BeautifulSoup,selenium包 phantomjs 原理: 通过aid下载bilibi ...
- python爬虫下载小视频和小说(基础)
下载视频: 1 from bs4 import BeautifulSoup 2 import requests 3 import re 4 import urllib 5 6 7 def callba ...
- Python爬虫-爬小说
用途 用来爬小说网站的小说默认是这本御天邪神,虽然我并没有看小说,但是丝毫不妨碍我用爬虫来爬小说啊. 如果下载不到txt,那不如自己把txt爬下来好了. 功能 将小说取回,去除HTML标签 记录已爬过 ...
- Python爬虫中文小说网点查找小说并且保存到txt(含中文乱码处理方法)
从某些网站看小说的时候经常出现垃圾广告,一气之下写个爬虫,把小说链接抓取下来保存到txt,用requests_html全部搞定,代码简单,容易上手. 中间遇到最大的问题就是编码问题,第一抓取下来的小说 ...
- 如何丧心病狂的使用python爬虫读小说
写在前边 其实一直想入门python很久了,慕课网啊,菜鸟教程啊python的基础的知识被我翻了很多遍了,但是一直没有什么实践.刚好,这两天被别人一直安利一本小说<我可能修的是假仙>,还在 ...
- Python爬虫下载美女图片(不同网站不同方法)
声明:以下代码,Python版本3.6完美运行 一.思路介绍 不同的图片网站设有不同的反爬虫机制,根据具体网站采取对应的方法 1. 浏览器浏览分析地址变化规律 2. Python测试类获取网页内容,从 ...
- 使用Python爬虫整理小说网资源-自学
第一次接触python,原本C语言的习惯使得我还不是很适应python的语法风格.希望读者能够给出建议. 相关的入门指导来自以下的网址:https://blog.csdn.net/c406495762 ...
随机推荐
- Apache DolphinScheduler 架构演进 & Roadmap
<DataFunSummit:大数据存储架构峰会> 2021年4月17日Apache DolphinScheduler PMC chair 代立冬参与 DataFunSummit 分享&l ...
- 100行代码实现一个RISC-V架构下的多线程管理框架
1. 摘要 本文将基于RISC-V架构和qemu仿真器实现一个简单的多线程调度和管理框架, 旨在通过简单的代码阐明如何实现线程的上下文保存和切换, 线程的调度并非本文的重点, 故线程调度模块只是简单地 ...
- CM311-1a(S905L3系列)玩转桌面
那安装了ambian后,玩转桌面(安装GUI桌面环境)有没有可能呢?那肯定啊!那桌面有什么用?当然有用,多一种玩法,可以写写代码,上网冲浪,学习linux语法什么的.而且单主机只要40左右,想想看可以 ...
- [CTSC2007]数据备份Backup (贪心)
题面 Description 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐 ...
- js实现多条件排序
1.sort排序允许接受一个参数(函数),这个函数接受2个形参a,b,并且通过冒泡的方式比较.例子:Arr.sort((a,b) => a-b); 升序排列Arr.sort((a,b) =& ...
- KingbaseES R6 集群repmgr.conf参数'recovery'测试案例(二)
案例二:测试'recovery = automatic' 1.查看集群节点状态信息: [kingbase@node1 bin]$ ./repmgr cluster show ID | Name | R ...
- flex常用布局
公共样式: <style> * { margin: 0; padding: 0; } .has-flex { display: flex; } </style> 垂直居中 子元 ...
- Markdown学习 .md学习
# Markdown学习## 标题## 二级标题### 三级标题#### 四级标题## 字体**两个*是粗体***一个是斜体****三个是斜体加粗***~~两个~是删除线~~## 引用>走向人生 ...
- 装饰Hexo博客以及部署个人站点
我的博客最开始采用的是Hexo+hexo-theme-next搭建的,使用GitHub Pages托管并进行自动化部署,写文发布的流程非常简单方便,云端写作发布也轻而易举. 本来事情到这里就应该结束了 ...
- 【一月一本技术书】-【Go语言设计与实现】- 9月
Go : 2009.11.10 代表作:Docker.k8s.etcd 模仿C语言,目标:互联网的C语言 讲的晦涩难懂....硬板..放弃了好几次才读完.满分10分,打6分. 下个月:Python数据 ...