实现:

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('&nbsp;',' ')
content = content.replace('<br />', ' ')
content = content.replace('&#039', '') #将内容写入文件中
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异常

分析:

  1. 请求连接数太多
  2. 请求速度过快

解决:

  1. 设置默认重连数:

    requests.adapters.DEFAULT_RETRIES = 5
  2. 捕捉异常,等待5秒后再重试
    try:
    ret = requests.get(url).content.decode('gbk')
    except requests.exceptions.ConnectionError:
    print('连接太快了..等等')
    time.sleep()
    ret = requests.get(url).content.decode('gbk')

最新文章

  1. ASP.NET Core服务器综述
  2. 【poj2417】 Discrete Logging
  3. OkHttp学习总结
  4. Java [Leetcode 101]Symmetric Tree
  5. pomelo 服务器开发常用术语
  6. js+css实现模态层效果
  7. eclipse安装Flash Builder 4后变成中文,怎么解决
  8. [TYVJ] P1010 笨小猴
  9. UITextField和UIViewConteoller
  10. HDU - 3853
  11. C# Unity游戏开发——Excel中的数据是如何到游戏中的 (四)2018.4.3更新
  12. JSF-受管Bean与EL表达式
  13. JS-MD5加密
  14. PHP 标准规范,PSR-1,PSR-2,PSR-3,PSR-4,PSR-5,PSR-6,PSR-7及其他标准
  15. svg(一)
  16. LuoguP2257 YY的GCD
  17. centos7 下安装 nginx-1.12.2
  18. 初识thinkphp(5)
  19. Hbase 学习(十) HBase Snapshots
  20. 持续集成之四:Jenkins+sonarqube

热门文章

  1. [Angular] Performance Caching Policy - Cache First, Network Last
  2. 高速学会Mac上托管代码到github(具体解释)
  3. 推送_即时推送_即时通讯_在线Demo
  4. POJ3190 Stall Reservations 贪心
  5. linux下udev简介【转】
  6. Android的编译环境--Build系统【转】
  7. hdoj--1045--Fire Net(二分图)
  8. x+=y与x=x+y相同吗?
  9. php保存远程图片
  10. hihoCoder-1830 2018亚洲区预选赛北京赛站网络赛 C.Cheat 模拟