python编程获取续蜀山剑侠传:从目录名称、网址到内容

简介: python编程获取续蜀山剑侠传:从目录名称、网址到内容

昨天已经完成了 从《续蜀山剑侠传》连载网站页面上获取目录信息,包括目录名称和网址。

   

接下来就是读取每个目录里的连载内容了,通过对网页代码的分析,  获取连载内容的代码如下,其中涉及到用正则表达到过滤HTML标签、空格,转换换行符\n等,都是非常经典 和 实用的:

# -*- coding:UTF-8 -*-
import urllib.request, sys
import re

#--------------------------
def openUrl(url):
   try:
      page = urllib.request.urlopen(url, data=None, timeout=5)
   except urllib.error.HTTPError as e:
     print(e.code)
     print(e.reason)
     return ''
   except urllib.error.URLError as e:
     print(e.reason)
     return ''
   else:    
      html = page.read().decode('utf-8')
     return html

#--------------------------
def getCon(html, tag):
   i = html.find(tag)
   if i == -1:
      print ('没有找到' + tag)
     return ''
   else:
      con = html[i+len(tag):]
     #print ("前30个字符:" + con[:30])

      tag = 'ul'
     tag_pat = r'(?<=<'+ tag + '>).*?(?=</' + tag + '>)'  
     tag_ex = re.compile(tag_pat, re.M|re.S) 
      con = re.findall(tag_ex, con)
      #con = html.split('正文')
     #print (con[0])
     return con[0]

#--------------------------
def printList(list, host):
   #获取text
   res = r'(.*?)'
   t = re.findall(res, list, re.S|re.M)

   #获取href
   res_url = r"(?<=href=\").+?(?=\")|(?<=href=\').+?(?=\')"
   h = re.findall(res_url, list, re.I|re.S|re.M)
   
   for i in range(len(t)):
     print (str(i+1) + '\t' + t[i] + '\t' + host + h[i])

#--------------------------
def showCon(url):
   print (url)
   html = openUrl(url)
   if len(html) <= 0:
      print ('……未能打开-_-!')
     return

   #print (html)
   #html = html.replace('\u3000', ' ')
   html = html.replace('', '\n')
   
  #取回目
   res = r'(.*?)
'
   t = re.findall(res, html, re.I|re.S|re.M)
   print (t[0])

   #获取内容
   res = r'(.*?)
'
   c = re.findall(res, html, re.I|re.S|re.M)
   #t = c[0].replace('\u3000',' ')
   #t = t.replace('','\n')
   print (c[0])
  
#--------------------------
def showList(list, host):
   #获取text
   res = r'(.*?)'
   t = re.findall(res, list, re.S|re.M)

   #获取href
   res_url = r"(?<=href=\").+?(?=\")|(?<=href=\').+?(?=\')"
   h = re.findall(res_url, list, re.I|re.S|re.M)
 
   showCon(host + h[0])  
   #for i in range(len(t)):
   # showCon (host + h[i])

#--------------------------
def main():
   url = 'http://www.mengxi.net/book/263745/index.html'
   i = url.index('/', 7)
   host = url[0 : i]
   #print ('打开' + url)
   html = openUrl(url)
   if len(html) > 0:
      tag = '正文'
      list = getCon(html, tag)
     showList(list, host)

main()

代码运行结果如下:

image.png

相关文章
|
3天前
|
设计模式 开发者 Python
Python编程中的设计模式:工厂方法模式###
本文深入浅出地探讨了Python编程中的一种重要设计模式——工厂方法模式。通过具体案例和代码示例,我们将了解工厂方法模式的定义、应用场景、实现步骤以及其优势与潜在缺点。无论你是Python新手还是有经验的开发者,都能从本文中获得关于如何在实际项目中有效应用工厂方法模式的启发。 ###
|
1天前
|
数据处理 Python
从零到英雄:Python编程的奇幻旅程###
想象你正站在数字世界的门槛上,手中握着一把名为“Python”的魔法钥匙。别小看这把钥匙,它能开启无限可能的大门,引领你穿梭于现实与虚拟之间,创造属于自己的奇迹。本文将带你踏上一场从零基础到编程英雄的奇妙之旅,通过生动有趣的比喻和实际案例,让你领略Python编程的魅力,激发内心深处对技术的渴望与热爱。 ###
|
4天前
|
数据采集 机器学习/深度学习 人工智能
Python编程入门:从基础到实战
【10月更文挑战第24天】本文将带你进入Python的世界,从最基础的语法开始,逐步深入到实际的项目应用。我们将一起探索Python的强大功能和灵活性,无论你是编程新手还是有经验的开发者,都能在这篇文章中找到有价值的内容。让我们一起开启Python的奇妙之旅吧!
|
6天前
|
设计模式 监控 数据库连接
Python编程中的设计模式之美:提升代码质量与可维护性####
【10月更文挑战第21天】 一段简短而富有启发性的开头,引出文章的核心价值所在。 在编程的世界里,设计模式如同建筑师手中的蓝图,为软件的设计和实现提供了一套经过验证的解决方案。本文将深入浅出地探讨Python编程中几种常见的设计模式,通过实例展示它们如何帮助我们构建更加灵活、可扩展且易于维护的代码。 ####
|
3天前
|
数据库 开发者 Python
“Python异步编程革命:如何从编程新手蜕变为并发大师,掌握未来技术的制胜法宝”
【10月更文挑战第25天】介绍了Python异步编程的基础和高级技巧。文章从同步与异步编程的区别入手,逐步讲解了如何使用`asyncio`库和`async`/`await`关键字进行异步编程。通过对比传统多线程,展示了异步编程在I/O密集型任务中的优势,并提供了最佳实践建议。
8 1
|
6天前
|
Python
Python编程中正则表达式的使用
【10月更文挑战第22天】正则表达式,一种强大的文本处理工具,在Python编程中有着广泛的应用。本文将介绍如何使用Python中的re库来使用正则表达式,包括如何创建、匹配、查找和替换字符串等。通过学习本文,你将能够掌握Python中正则表达式的基本使用方法。
|
2天前
|
机器学习/深度学习 前端开发 数据可视化
解锁Python编程的魔法:从小白到高手的蜕变之旅####
【10月更文挑战第25天】 本文将带你踏上一场别开生面的Python学习探险,不讲枯燥语法,只谈实战乐趣。想象一下,编程不再是冰冷的代码堆砌,而是像组装乐高一样有趣,每一步都充满惊喜。我们将一起揭开Python的神秘面纱,通过几个生动有趣的小项目,让你在不知不觉中掌握这门强大的语言,从此开启你的技术超能力。准备好了吗?让我们边玩边学,成为编程世界的超级英雄! --- ####
7 0
|
28天前
|
安全 测试技术 数据库
Python编程--sys模块及OS模块简单用例
Python编程--sys模块及OS模块简单用例
16 1
|
28天前
|
JSON 数据格式 Python
Python编程:利用JSON模块编程验证用户
Python编程:利用JSON模块编程验证用户
19 1
|
29天前
|
数据处理 Python
Python编程-利用datetime模块生成当前年份之前指定的间隔所有年份的日期列表和csv文件
Python编程-利用datetime模块生成当前年份之前指定的间隔所有年份的日期列表和csv文件
18 1