一、前言
小说这么多,找起来也是一种苦恼呢!根据网站自带的筛选,只能通过一个方面筛选,如类型、更新时间等等。那我想多角度筛选一篇文章怎么办?看了这篇文章,你的苦恼便会烟消云散!
二、网站爬取分析
既然是要爬取排行榜,进行数据筛选,肯定少不了多页爬取。那我们就先来看看,每一页的URL有什么变化,有时候规律可循。
通过比较,我们可以很快发现规律,之后在这个地方使用“1和2所在的位置”循环即可。
for i in range(1, 5): # 根据想要爬的页数而改动
url = 'https://www.52bqg.net/top/allvisit/{}.html'.format(i+1)
然后就是对一个页面进行检查分析啦。
规律也是很明显的,一个li节点对应一篇小说的目录内容,使用bs4,很容易就能对内容进行提取。
提取内容之后,就是对内容的保存,利用xlwt模块,把内容导入到excel中。
三、完整代码
list_all = list()
path = 'D:/笔趣阁目录.xls'
workbook = xlwt.Workbook(encoding='utf-8', style_compression=0)
worksheet = workbook.add_sheet('小说目录', cell_overwrite_ok=True) # 可覆盖 # 设置工作表名
col = ('小说类型', '小说名', '最新章节', '作者', '最新更新时间')
for i in range(0, 5):
worksheet.write(0, i, col[i]) # 设置列名
for i in range(1, 5): # 根据想要爬的页数而改动,这里爬的是第一页到第四页
url = 'https://www.52bqg.net/top/allvisit/{}.html'.format(i)
data_list = get_content(url)
list_all.append([data_list])
for i in range(len(list_all)): # i=0~1
sleep(0.5) # 延迟0.5秒)
print('正在下载第{}页目录=====> 请稍后'.format(i+1))
data_s = list_all[i]
for j in range(len(data_s)): # j=0
data = data_s[j]
for k in range(len(data)): # k=0~49
data_simple = data[k]
for m in range(0, 5): # m=0~4
worksheet.write(1 + i * 50 + k, m, data_simple[m])
workbook.save(path)