欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-09-17 20:42:42
1.导入库import urllib.requestimport re2.编写函数#写一个叫xxx的函数def down():3.获取小说的源码并编码以gbk方式显示url='http://www.quanshuwang.com/book/9/9055'html=urllib.request.urlopen(url).read().decode('gbk')如果不转成gbk显示是这样的那又为什么一定是gbk呢 ?从它源码里面可以看见它的编码方式是什么4.获取所有章节的链接r...

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显示是这样的
使用python的request库爬取某小说书网站
那又为什么一定是gbk呢 ?从它源码里面可以看见它的编码方式是什么
使用python的request库爬取某小说书网站

4.获取所有章节的链接

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

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

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

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

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

6.获取章节源码

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

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

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 />', '')

不然下载下来中间是这样的
使用python的request库爬取某小说书网站

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

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

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

11.最后调用函数

down()

保存在项目同目录下,可以选中右键Show in Explorer打开文件位置
使用python的request库爬取某小说书网站
使用python的request库爬取某小说书网站

全部代码

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()

本文地址:https://blog.csdn.net/qq_42259469/article/details/107133493