使用python的request库爬取某书网小说

    技术2026-08-03  0

    1.导入库

    import urllib.request import re

    2.编写函数

    #写一个叫xxx的函数 def down():

    3.获取小说的源码并编码以gbk方式显示

    url='http://www.quanshuwang.com/book/9/9055' html=urllib.request.urlopen(url).read().decode('gbk')

    如果不转成gbk显示是这样的 那又为什么一定是gbk呢 ?从它源码里面可以看见它的编码方式是什么

    4.获取所有章节的链接

    reg= r'<li><a href="(.*?)" title="(.*?)">(.*?)</a></li>' urls=re.findall(reg,html)

    5.循环所有的章节链接和标题

    for url in urls: novel_url=url[0]#链接 novel_title=url[1]#标题

    6.获取章节源码

    catal=urllib.request.urlopen(novel_url).read() catal_html=catal.decode('gbk')

    7.编写获取章节的内容的表达式

    reg=r'</script>&nbsp;&nbsp;&nbsp;&nbsp;(.*?)<script type="text/javascript">'

    8.多行匹配

    reg = re.compile(reg, re.S)# chapter = re.findall(reg, catal_html)

    9.内容中间多余的空格代码(&nbsp)和换行(/br)替换成空字符串‘’

    chapter=chapter[0].replace('&nbsp;','') chapter = chapter.replace('<br />', '')

    不然下载下来中间是这样的

    10.下载的同时提示正在下载哪一章节

    print('正在下载 %s'%novel_title) #上下文处理器把内容写进文本,这种方式不用自己关闭,也可以用{}.doc/{}.docx文档方式保存. with open('{}.txt'.format(novel_title),'w') as d: d.write(chapter)

    11.最后调用函数

    down()

    保存在项目同目录下,可以选中右键Show in Explorer打开文件位置

    全部代码

    import urllib.request import re #写一个叫xxx的函数 def down(): #获取小说的页面源码 url='http://www.quanshuwang.com/book/9/9055' #读取并编码以gbk方式显示 html=urllib.request.urlopen(url).read().decode('gbk') #获取所有章节的链接 reg= r'<li><a href="(.*?)" title="(.*?)">(.*?)</a></li>' urls=re.findall(reg,html) #循环所有的章节链接和标题 for url in urls: novel_url=url[0]#链接 novel_title=url[1]#标题 #获取章节源码 catal=urllib.request.urlopen(novel_url).read() catal_html=catal.decode('gbk') #获取章节的内容 reg=r'</script>&nbsp;&nbsp;&nbsp;&nbsp;(.*?)<script type="text/javascript">' #多行匹配S reg = re.compile(reg, re.S)# chapter = re.findall(reg, catal_html) #内容中间多余的空格代码(&nbsp)和换行(/br)替换成空字符串‘’ chapter=chapter[0].replace('&nbsp;','') chapter = chapter.replace('<br />', '') #下载到电脑 print('正在下载 %s'%novel_title) #上下文处理器把内容写进文本,这种方式不用自己关闭,也可以用{}.doc/{}.docx文档方式保存. with open('{}.txt'.format(novel_title),'w') as d: d.write(chapter) #调用函数 down()
    Processed: 0.013, SQL: 9