如何用Python抓取《续蜀山剑侠传》的目录名称及对应网址?

2026-05-21 15:301阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计586个文字,预计阅读时间需要3分钟。

如何用Python抓取《续蜀山剑侠传》的目录名称及对应网址?

《非常受欢迎的武侠小说《蜀山剑侠传》由大师级作家还珠楼主创作,因种种原因,《蜀山剑侠传》尚未完结。这部作品令众多读者痴迷,也激发了不少人创作续作。《蜀山剑侠传》的续作众多,但至今仍未有定论。》


一直很欣赏武侠小说宗师还珠楼主李寿民的扛鼎之作《蜀山剑侠传》,可惜由于种种原因,《蜀山剑侠传》并未写完。这着实令还珠迷们扼腕,也有不少人继写了《蜀山剑侠传》,但是良莠夹杂,其中有一位退休公务员写的《续蜀山剑侠传》相对来说是按照还珠楼主的思路续写的,并且在网上连载了,于是想把它从网上down下来保存为txt文件。顺便练习一下Python编程。

首先要获取目录信息,主要是目录名称和网址。通过分析连载网站的网页源代码,编写Python代码如下:

如何用Python抓取《续蜀山剑侠传》的目录名称及对应网址?

# -*- 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 getList(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 main():
url = '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 = getList(html, tag)
printList(list, host)

main()

程序运行结果如下:

本文共计586个文字,预计阅读时间需要3分钟。

如何用Python抓取《续蜀山剑侠传》的目录名称及对应网址?

《非常受欢迎的武侠小说《蜀山剑侠传》由大师级作家还珠楼主创作,因种种原因,《蜀山剑侠传》尚未完结。这部作品令众多读者痴迷,也激发了不少人创作续作。《蜀山剑侠传》的续作众多,但至今仍未有定论。》


一直很欣赏武侠小说宗师还珠楼主李寿民的扛鼎之作《蜀山剑侠传》,可惜由于种种原因,《蜀山剑侠传》并未写完。这着实令还珠迷们扼腕,也有不少人继写了《蜀山剑侠传》,但是良莠夹杂,其中有一位退休公务员写的《续蜀山剑侠传》相对来说是按照还珠楼主的思路续写的,并且在网上连载了,于是想把它从网上down下来保存为txt文件。顺便练习一下Python编程。

首先要获取目录信息,主要是目录名称和网址。通过分析连载网站的网页源代码,编写Python代码如下:

如何用Python抓取《续蜀山剑侠传》的目录名称及对应网址?

# -*- 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 getList(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 main():
url = '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 = getList(html, tag)
printList(list, host)

main()

程序运行结果如下: