有时候看网页版的连载小说,有点费劲,于是写个小程序,自己下内容到本地.txt文件。下面给一些伪代码。
对于具体的小说网站,是否是动态加载数据,html格式如何需要具体分析。不过下载的基本套路都一样。从技术上说数据解析关注也就两个点:标签定位,数据提取。一般用bs4,lxml。bs4在使用上就1个属性:tagname;3种方法:find,findall,select。
下载实现步骤很简单:
1.从首页解析出章节的标题和详情页的url
url=''
page_text=
2.数据解析(章节标题,详情页的url)
2.1实例化soup
soup=BeautifulSoup(page_text,'lxml')
2.2提取章节的内容一页一个soup
a_list=soup.select('.book-mulu>ul>li>a')
包含title和detail_url,
根据detail_url 提取page_text_detail 和content
2.3 爬到的数据写入文件
来个隐去URL的实例
from bs4 import BeautifulSoup
import requests
#1.从首页解析出章节的标题和详情页的url
url='https://www.***.com/list/3090217.html'
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
}
page_text = requests.get(url=url,headers=headers).text
fp=open('./down.text','w',encoding='utf-8')
#2.数据解析(章节标题,详情页的url)
soup=BeautifulSoup(page_text,'lxml') #2.1实例化soup
a_list=soup.select('.book-mulu>ul>li>a')
for a in a_list:
title=a.string
detail_url='https://www.***.com/list/3090217.html'+a['href']
# 2.2提取章节的内容一页一个soup
page_text_detail=requests.get(url=detail_url,headers=headers)
soup=BeautifulSoup(page_text_detail,'lxml')
content=soup.find('div',class_='chapter_content').text
#2.3 爬到的数据写入文件
fp.write(title+':'+content+'\n')
print(title,'下载成功!')