最近刚接触了Python爬虫,比较感兴趣,再加上本人喜欢看小说,就试写了一个下载小说的脚本。脚本说明:提供小说目录页的网址(仅限笔趣阁网站上的小说:http://www.biquge.com/),代码如下:
import requests
from bs4 import BeautifulSoup
#提取章节内容
def getNovelChapter(url):
res = requests.get(url)
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text,'html.parser')
try:
title = soup.select('.bookname h1')[0].text
return title + '\n ' + '\n '.join(a for a in soup.select('#content')[0].text.split())
except IndexError:
return ''
url = 'http://www.biquge.tw/0_52/' #小说目录页的网址
headers = {'Host':'www.biquge.tw',
'Connection':'keep-alive',
'Cache-Control':'max-age=0',
'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.59 Safari/537.36'}
res = requests.get(url)
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text,'html.parser')
title=soup.select('#info')[0].h1.text #小说名称提取
author=soup.select('#info')[0].p.text.strip() #小说作者提取
file = open(title + '.text','w') #保存文件
file.write(title)
file.write('\n' + author + '\n\n')
i = 0
l = int(len(soup.select('#list dd')))
while (i
ChapterUrl = url + soup.select('#list dd').a['href'].split('/')[-1]
file.write(getNovelChapter(ChapterUrl) + '\n\n')
i=i+1
file.close()
print('下载完成')
问题:1、因只是对某个网站上的网页源码进行解析的,换另一个小说网站可能就不行了,这个暂未去验证;
2、在涵式getNovelChapter(url)中增加了try except代码,可能会导致某个章节漏下载,若不加这个代码,总是会出现超出界限的错误提示(IndexError: list index out of range),且每次运行,下载下来的章节数目不一样(有时候之下在一百多章,有时候二百来章),至今未搞清楚原因;
3、另外脚本运行速度比较慢,暂不知道如何提升。
虽然有许多问题,不过这是本人写的第一个代码,以前没有编程过,当确实下载下来小说时,自我感觉有些小小的激动{:1_912:}。
初次编写Python脚本,不足之处请大神指点,不胜感激!!!