使用requests爬取小说
实现:
import requests
import re
import time def get_chapter(aim_url):
'''
获取小说章节名称和对应的url地址
:param aim_url:小说目录页url
:return:章节名和url的字典
''' ret = requests.get(aim_url)
content = ret.content.decode('gbk') li = re.findall('<li><a.*</li>',content) #获取小说章节的地址 url_dic = {}
for i in li:
print(i)
chapter = re.search(r'">.*</a',i).group()[:-]
url = aim_url + re.search(r'[0-9]{7}.html',i).group()
url_dic[chapter] = url return url_dic def get_content(chapter_url):
'''
获取小说内容
:param chapter_url:章节名和url的字典
:return:
'''
requests.adapters.DEFAULT_RETRIES = for chapter,url in chapter_url.items(): try:
ret = requests.get(url).content.decode('gbk')
except requests.exceptions.ConnectionError:
print('连接太快了..等等')
time.sleep()
ret = requests.get(url).content.decode('gbk') #匹配正文
ret = ret.replace('\n','')
content = re.search(r'<div id="content" class="content">.*chapterpage',ret).group()[:] #替换正文中的html标签
content = content.replace(' ',' ')
content = content.replace('<br />', ' ')
content = content.replace(''', '') #将内容写入文件中
with open('novel.txt',mode='a',encoding='utf-8') as f:
f.write(chapter+'\n')
f.write(content)
f.write('\n\n') print(chapter) if __name__ == '__main__':
li = get_chapter('https://www.9dxs.com/2/2348/index.html')
get_content(li)
遇到的问题:
爬取一半时,抛出了requests.exceptions.ConnectionError异常
分析:
- 请求连接数太多
- 请求速度过快
解决:
- 设置默认重连数:
requests.adapters.DEFAULT_RETRIES = 5
- 捕捉异常,等待5秒后再重试
try:
ret = requests.get(url).content.decode('gbk')
except requests.exceptions.ConnectionError:
print('连接太快了..等等')
time.sleep()
ret = requests.get(url).content.decode('gbk')
使用requests爬取小说的更多相关文章
- python爬虫——爬取小说 | 探索白子画和花千骨的爱恨情仇(转载)
转载出处:药少敏 ,感谢原作者清晰的讲解思路! 下述代码是我通过自己互联网搜索和拜读完此篇文章之后写出的具有同样效果的爬虫代码: from bs4 import BeautifulSoup imp ...
- Python3爬取小说并保存到文件
问题 python课上,老师给同学们布置了一个问题,因为这节课上学的是正则表达式,所以要求利用python爬取小说网的任意小说并保存到文件. 我选的网站的URL是'https://www.biquka ...
- Python实战项目网络爬虫 之 爬取小说吧小说正文
本次实战项目适合,有一定Python语法知识的小白学员.本人也是根据一些网上的资料,自己摸索编写的内容.有不明白的童鞋,欢迎提问. 目的:爬取百度小说吧中的原创小说<猎奇师>部分小说内容 ...
- requests爬取百度音乐
使用requests爬取百度音乐,我想把当前热门歌手的音乐信息爬下来. 首先进行url分析,可以看到: 歌手网页: 薛之谦网页: 可以看到,似乎这些路劲的获取一切都很顺利,然后可以写代码: # -*- ...
- python之爬取小说
继上一篇爬取小说一念之间的第一章,这里将进一步展示如何爬取整篇小说 # -*- coding: utf- -*- import urllib.request import bs4 import re ...
- 用Python爬取小说《一念永恒》
我们首先选定从笔趣看网站爬取这本小说. 然后开始分析网页构造,这些与以前的分析过程大同小异,就不再多叙述了,只需要找到几个关键的标签和user-agent基本上就可以了. 那么下面,我们直接来看代码. ...
- Scrapy爬取小说简单逻辑
Scrapy爬取小说简单逻辑 一 准备工作 1)安装Python 2)安装PIP 3)安装scrapy 4)安装pywin32 5)安装VCForPython27.exe ........... 具体 ...
- Requests爬取网页的编码问题
Requests爬取网页的编码问题 import requests from requests import exceptions def getHtml(): try: r=requests.get ...
- python3下BeautifulSoup练习一(爬取小说)
上次写博客还是两个月以前的事,今天闲来无事,决定把以前刚接触python爬虫时的一个想法付诸行动:就是从网站上爬取小说,这样可以省下好多流量(^_^). 因为只是闲暇之余写的,还望各位看官海涵:不足之 ...
随机推荐
- 公布IOS产品被拒后怎样再上传新公布包
问题描写叙述: 前两天提交公司产品2.0.7版本号到苹果审核,昨天提示被拒绝. 被拒原因就不描写叙述了. 我们经过改动后.又一次打包上传,但是怎么也提交不了.由于在苹果后台上已经存在2.0.7版本号的 ...
- python爬虫解决百度贴吧登陆验证码问题
作为贴吧重度用户,写了个贴吧爬虫脚本 抄了一些别人的代码.记得有个验证码解决的.可是忘了链接了,今天最终自己攻克了. 首先要让登陆须要验证码,不停地登陆就好了...度娘非常快会加上验证码大法的... ...
- C++设计模式之状态模式(二)
2.智能空调的设计与实现 某软件公司将开发一套智能空调系统: 系统检測到温度处于20---30度之间,则切换到常温状态:温度处于30---45度,则切换到制冷状态: 温度小于20度,则切换到制热状态. ...
- EularProject 36:2进制和10进制回文数
华电北风吹 天津大学认知计算与应用重点实验室 完毕日期:2015/7/29 Double-base palindromes Problem 36 The decimal number, 585 = 1 ...
- Android应用开发进阶篇-场景文字识别
因为研究生毕业项目须要完毕一个基于移动终端的场景文字识别系统.尽管离毕业尚早,但出于兴趣的缘故,近一段抽时间完毕了这样一套系统. 主要的架构例如以下: client:Android应用实现拍摄场景图片 ...
- camera table表编译
mmm -j8 vendor/mediatek/proprietary/hardware/mtkcam/v1/common/paramsmgr/ 2>&1 | tee ft.lib.lo ...
- Adding a view
在添加View之前,之前的页面是下面这个样子,需要注意的是浏览器标题,以及浏览器的内容 https://docs.asp.net/en/latest/tutorials/first-mvc-app/a ...
- (Go)02.go 安装delve调试工具测试
安装调试工具 go get github.com/derekparker/delve/cmd/dlv 增加断点调试 调试--->启动调试
- Windows显示我的电脑到桌面以及给一些程序设置快捷键
Windows显示我的电脑到桌面,我测试的是windows server 2012和windows10 1.按Win(键盘上的微软徽标键)+R,输入: rundll32.exe shell32.dl ...
- Centos7中 文件大小排序
centos7中根据文件大小排序以及jenkins配置每周删除一次jobs日志信息 https://blog.csdn.net/u013066244/article/details/70232050