ITPub博客

首页 > IT职业 > IT职场 > 如何用python爬虫下载小说?

如何用python爬虫下载小说?

IT职场 作者:25minutes 时间:2021-09-11 10:07:11 0 删除 编辑

小编发现比起看实体书,用手机看小说才是广大小伙伴喜欢做的事情。不得不说,小编也很喜欢用手机看小伙,因为实体书拿着不方便,而且看完放着挺浪费的。当然网上的小说也不是所有都能看的,这里小编就想用爬虫来获取一些小说,应该有不少可以实现的。喜欢看小说的小伙伴一起来看看接下来如何操作吧。


只要利用 requests 和 Beautifulsoup 模块就可以获取到每一章节的 url 集合了。

import requests
from bs4 import BeautifulSoup
 
html = requests.get(url)
soup = BeautifulSoup(html.text, 'lxml')
all_td = soup.find_all('td', class_="L")
for a in all_td:
    all_urls = a.find('a').get('href')
print(all_urls)


获取所有章节 url 之后,自然是获取每一个页面的内容,然后解析出小说的内容,保存到文件夹。这里又要用到 requests,我们写个函数复用。

def get_html(url):
    # 伪装浏览器的头,这部大家应该都理解:
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
    html = requests.get(url,headers=headers)
return html


获取小说内容也很简单,BeautifulSoup 解析出网页,如果直接用 BeautifulSoup 通过提取网页 html 标签来获取小说的话,会出现排版问题,不够美观。这里我们仍然用正则匹配小说内容。

for each in all_urls:
    soup = BeautifulSoup(get_html(each).text, 'lxml')
    # 获取章节标题
    title = soup.title.text.split('-')[1]
    all_info = soup.find('dd', id="contents")
    # 使用正则匹配章节内容
    p = r'<dd id="contents">(.*?)</dd>'
    # 处理正则在匹配错误章节,都是作者牢骚的内容,不影响小说内容抓取,直接过滤
    try:
        info = re.findall(p, str(all_info), re.S)[0]
        # 下载到txt文件
        with open(title + '.txt', 'w', encoding='gbk', errors='ignore') as f:
            f.write(info.replace('<br/>', 'n'))
    print('save sucessful: %s' % title)
    except:
        print('re faild: %s' % title)


到这里我们的小说就已经收获囊中了,喜欢看小说的小伙伴们还在等什么,赶紧试着用小编的方法把自己喜欢的内容下载出来吧。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4328/viewspace-2831959/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-07-17

  • 博文量
    336
  • 访问量
    14897