python爬虫小说代码示例-使用简单Python爬虫获取一个干净整洁的小说文件

打开小说所在界面,右击选择查看网页源代码

1.在头部能够看到'charset=utf-8'得知文件的编码为'uft-8'!,url=http://www.17k.com/list/2921315.html

头部.png

import urllib.request as req #导入urllib库,用于对url进行操作

webpage=req.urlopen(url) #打开网页并将网页源代码临时存储

file=webpage.read().decode('utf-8') #将网页源代码转码为网页使用的编码并读取

2.查看网页源代码的规律,标题是在'

'之间,章节信息是存在''之间,其他的信息同样是这样的规律

代码如下:

#根据网页源代码的特征,使用re库的正则表达式获取需要的数据,获取到的数据是一个列表

import re #导入re库

title=re.findall(r'

(.*?)
',file,re.S)

4、对

中进行数据清洗,代码如下

其余部分操作方法一致

#通re.findall()获取到的是一个列表,由网页源代码可知标题信息在第一个

lines=title[0]

#数据清洗

lines=lines.strip().split(' ')

thing=[] #作品以及作者信息用列表thing存储

for line in lines:

index=line.find('')

index_left=line.rfind('>',0,index) #查找在'>'之前出现的最后一个'<'

thing.append(line[index_left+1:index])

print(lines)

print(thing)

#

效果如下

image.png

5、将数据写入文件

b,d=read_cata(url) #用b,d,c分别存储函数自定义函数read_cata()返回的作品信息,章节标题,章节超链接

outfile=open('nongyi.txt','w') #打开一个文件'nongyi.txt',如人文件不存在就会自动生成文件,'w'代表文件为写模式,其会将文件中的数据清除全部重新写入

for i in b:

outfile.write('%s '%i) #将作品信息写入文件

for i in d:

outfile.write('%s '%i) #将每张章节标题写入文件

for i in c:

cata_thing_url(i,outfile) #调用cata_thing_url函数,将正文写入文件

outfile.close()

整本小说的完整代码:

import urllib.request as req

import re

#获取小说的相关信息

url='http://www.17k.com/list/2921315.html'

def read_cata(url):

webpage=req.urlopen(url) #打开网页并将网页源代码临时存储

file=webpage.read().decode('utf-8') #将网页源代码转码为网页使用的编码并读取

#根据网页源代码的特征获取需要的数据

title=re.findall(r'

(.*?)
',file,re.S)

lines=title[0] #通过re.findall()获取到的是一个列表

lines=lines.strip().split(' ')

thing=[] #作品以及作者信息用列表thing存储

for line in lines:

index=line.find('')

index_left=line.rfind('>',0,index) #查找在'>'之前出现的最后一个'<'

thing.append(line[index_left+1:index])

#获取存在'

'之间的章节信息

cata=re.findall(r'

(.*?)',file,re.S)

lines_cata=cata[1].strip()

lines_cata=lines_cata.replace(' ','').split('')

cata_thing=[]

cata_thing_href=[]

for line in lines_cata: #获取每章章节的标题和超链接

index=line.find('')

index_left=line.rfind('>',0,index)

cata_thing.append(line[index_left+1:index].replace(' ',''))

thing_href=re.findall('href="(.*?)"',line)

cata_thing_href.append(thing_href)

return thing,cata_thing,cata_thing_href[:-1]

#获取每一章的正文内容

def cata_thing_url(href,filename):

website='http://www.17k.com'

url=website+href[0] #将网站域名加上组成一个完整的链接

webpage=req.urlopen(url)

file=webpage.read().decode('utf-8')

title=re.findall(r'

(.*?)',file,re.S)[0].strip() #获取章节标题,在第一个标记中

filename.write(' %s'%title) #将标题写入文件

lines=re.findall(r'

(.*?)
',file,re.S)

lines=lines[0].replace('

','>').split('>')

for line in lines: #将每一行进行数据清洗后写入文件

line=line.replace('  ','')

line=line.replace(' ',' ')

filename.write(' %s '%line)

return

b,d,c=read_cata(url) #对获取章节的标题和衔接的read_cata函数进行调用

#将爬取到底数据写入当前目录文件'nongyi.txt'

outfile=open('nongyi.txt','w')

for i in b:

outfile.write('%s '%i) #将作品信息写入文件

for i in d:

outfile.write('%s '%i) #将每张章节标题写入文件

for i in c:

cata_thing_url(i,outfile) #调用cata_thing_url函数,将正文写入文件

outfile.close()

3.打开nongyi.txt能够看到以下效果

效果图.png

此方法仅供参考,勿做商业操作

你可能感兴趣的:(python爬虫小说代码示例-使用简单Python爬虫获取一个干净整洁的小说文件)