Python爬虫——使用正则表达式爬取一本喜欢的小说

使用正则表达式爬取一本喜欢的小说

这个爬虫的案例是对正则表达式的运用,通过这个案例,我们可以对正则表达式有更深入的了解。

1. 信息来源:

努努书坊。爬取的小说:三国演义。链接为:https://www.kanunu8.com/files/old/2011/2447.html

Python爬虫——使用正则表达式爬取一本喜欢的小说_第1张图片

2. 解析需要爬取的信息:

进入主页,我们可以看到如上图所示的信息,我们需要爬取的就是上图中的所有内容。即每个章节中的内容。这是一个两层爬虫,即我们首先要得到每个章节的链接,再通过每个章节的链接得到每个章节的信息。

我们在主页中点击右键——>查看网页源代码——>找到对应的章节的信息——>如图所示——>获取出对应的链接信息和标题

Python爬虫——使用正则表达式爬取一本喜欢的小说_第2张图片

Python爬虫——使用正则表达式爬取一本喜欢的小说_第3张图片

我们对上图所示的信息进行分析,可以发现:(匹配就得多试验,每个人的匹配方式可能不同,多尝试)

  • 链接和标题可以通过正则表达式—— r'(.+)' 匹配到;
  • 正文信息可以通过正则表达式——  r'

    (.+)

    ' 匹配到;

3. 代码如下:

import requests
import re

url='https://www.kanunu8.com/files/old/2011/2447.html'
txt=requests.get(url).content.decode('gbk')
m1=re.compile(r'(.+)')
print(m1.findall(txt)[0])
m2=re.compile(r'(.+)')
raw=m2.findall(txt)
sanguo=[]
r_url='https://www.kanunu8.com/files/old/2011/'
for i in raw:
    sanguo.append([i[2],r_url+i[1]])
m3=re.compile(r'

(.+)

',re.S) m4=re.compile(r'
') #保存到文件中 with open('三国演义.txt','a')as f: for zj in sanguo: zj_url=zj[1] print("正在下载----->",zj[0]) r_nr=requests.get(zj_url).content.decode('gbk') n_nr = m3.findall(r_nr) f.write('\n'+zj[0]+'\n') f.write(m4.sub('',n_nr[0]))

结果如下:小说就被我们成功的爬取下来了。

Python爬虫——使用正则表达式爬取一本喜欢的小说_第4张图片

Python爬虫——使用正则表达式爬取一本喜欢的小说_第5张图片

你可能感兴趣的:(python爬虫)