今天在网上看了一部小说,明明是很早以前的小说,换个名字,居然要付费了,很不开心;通过强大的百度,我找到了原始版本,本来很开心了,奈何不能下载,眼睛很辛苦,我本意是下下来拿到手机上朗读的,没办法只能自己动手采集下来了;

import urllib.requestimport re

啥也不说,先把需要的包给列出来。我们的命名尽量用规范化操作,这样自己养成好习惯,别人看起来也容易理解;业内管这玩意叫驼峰命名法,我也是现学现用,大家记住就行。

第一步,我们需要获取主页的源代码:

def getNoverContent():

这边我定义了getNoverCotent的变量,做为代码的核心部分随后定义html变量

html = urllib.request.urlopen('https://目录地址').read()html = html.decode('gbk')

获取到html的内容后我们先给打印出来,看下是否获取成功

print(html)

成功了就可以删除或者备注掉这行代码,养成习惯,这样一步步不容易出错:print(html)

第二部,获取网页代码中我们需要的部分:

我们在网页上调出刚才那个页面的源代码,找到你要采集的部分的div,这边用到正则表达式,有不明白的可以自己去学习下,或者我找个时间写篇介绍正则的文章;

req = r'
 
(.*?)'


其中的.*?这个是通配符,匹配所有的内容,我们要的内容是什么就在这个通配符外面加个()

这边我们获取的是目录页面的超链接何目录内容

req = re.compile(req)urls = re.findall(req,html)

urls变量内容就是我们要的超链接和目录内容了,打出来看看?

print(urls)

用完记得注释掉

第三部分,获取章节源代码:

我们用一个for循环来完成这一个功能

for url in urls:

我们这边先打印出url[0]查看下是否我们需要的超链接

#print(url[0])

确认无误后设置变量novel_urlnovel_url = '如果是部分超链接,这边加入链接前端'+ url[0] novel_title = url[1] chapt = urllib.request.urlopen(novel_url).read()

设置好编码,编码哪里看?

python POI采集 python采集信息_超链接

网页源码的这个部分,看看是utf-8还是gbk的就知道了

chapt_html = chapt.decode('gbk') #获取文章内容 req = r'
(.*?)


毕竟文章内容还是有很多行的,这部分不能省req = re.compile(req,re.S) chapt_content = re.findall(req,chapt_html)

都采集好了,打出来试试看?

print(chapt_content)
chapt_content

都没问题了我们就进行第三部分

第三步,存成txt导出来:

with open("小说名字.txt", mode='a+',encoding='utf-8') as f:f.write(novel_title) f.write(chapt_content) f.write("\n")

最后记得加入一行启动代码

if __name__ == '__main__':getNoverContent()

大功告成,等全部采集好就能传到手机上慢慢欣赏了!

python POI采集 python采集信息_超链接_02

大部分代码展示