Python 爬取起点的小说(非vip)

起点小说网是一个小说种类比较全面的网站,当然,作为收费类网站,VIP类的小说也很多,章节是VIP的话,有一个动态加载,也就是ajax,需要抓包分析网址,由于我没有VIP账号,所以只能爬取非VIP章节,这个爬虫就以爬取一部小说 冒牌大英雄为例,首先,我们可以打开冒牌大英雄所在的网址,也就是 以​https://book.qidian.com/info/131957​​ 这个网址为起点,依次取出各个章节的网址,在取出网址的同时,选取文章的标题和内容,写入本地硬盘,每一个章节为一个文件,保存格式为html格式,技术选型方面,使用第三方库requests。

爬取流程:起始网址​https://book.qidian.com/info/131957​​ 的网页源代码内带有所有章节的链接网址,首先,解析起始网址,取得起始网址源代码,编写正则提取章节链接,然后循环读取章节链接,正则提取标题和内容,每次循环,将标题加时间戳设为文件名称,内容写入文件中,爬虫就算结束了。下面。上代码:

import time
import requests
import re
url='https://book.qidian.com/info/131957'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',
'accept-encoding': 'gzip, deflate, sdch, br',
'accept-language': 'zh-CN,zh;q=0.8'
}
data=requests.get(url,headers=headers).text
pat=' <li data-rid=.*?><a href="(.*?)" target="_blank"'
all_url=re.compile(pat,re.S).findall(data)
try:
for i in all_url:
thisurl='https:'+str(i)
print(thisurl)
thisdata=requests.get(thisurl,headers=headers).text
pat_content='<div class="read-content j_readContent">.*?<p>(.*?)</div>.*?<div class="admire-wrap">'
pat_title='<span class="content-wrap">(.*?)</span>.*?</h3>'
thistitle=re.compile(pat_title,re.S).findall(thisdata)
title=str(thistitle[0:-1])
content=re.compile(pat_content,re.S).findall(thisdata)
file = open(r'e:\\bbbbb\\' + str(thistitle) + '_' + str(time.time()) + '.html', 'w', encoding='utf-8')
file.write(str(content))
file.close()
except Exception as e:
print(e)