截图
源代码
import requests
# re是正则表达式
import re
# 要爬取的小说url
url = 'http://www.shujy.com/5200/244309/'
response = requests.get(url)
response.encoding='utf-8'
html = response.text
print(html)
print('*'*100)
# 小说标题 正则表达式匹配
title=re.findall(r'<meta property="og:novel:book_name" content="(.*?)"/>',html)[0]
print(title)
# 新建一个txt文件来保存小说内容 与该py文件在同一目录中
fb = open('%s.txt'% title,'w',encoding='utf-8')
# 小说的章节目标都在标签<div id='list'>里我们通过下面的代码获取对应的章节名和url。用一个list来存放章节信息。
dl=re.findall(r'<div id="list">.*?</div>',html,re.S)[0]
chapter_info_list=re.findall(r'<a href="(.*?)">(.*?)</a>',dl)
print("*"*100)
print("获取章节列表")
# 循环每一章节,分别下载,先把章节的链接,章节名提取出来。
for chapter_info in chapter_info_list:
chapter_url,chapter_title = chapter_info
chapter_url = "http://www.shujy.com/5200/244309/%s" % chapter_url
chapter_url = chapter_url.replace(' ','')
print(chapter_url)
# 下载小说内容
chapter_response = requests.get(chapter_url)
chapter_response.encoding='utf-8'
# print(chapter_response.text)
chapter_html = chapter_response.text
# 小说的具体内容是在标签<div id=content>里,和获取小说章节一样我们采用正则表达式来取得小说的内容。
chapter_content = re.findall(r'<div id="content">(.*?)</div>',chapter_html,re.S)[0]
# 这时候的chaper_content的内容还包含<br>, 等标签
# print(chapter_content)
#做数据的清洗
chapter_content = chapter_content.replace(' ','')
chapter_content = chapter_content.replace('<br />','')
chapter_content = chapter_content.replace('&t','')
chapter_content = chapter_content.replace(' ','')
chapter_content = chapter_content.replace('&t;','')
chapter_content = chapter_content.replace('\n','')
# 数据清洗后的内容 是纯文本了
print(chapter_content)
# 把小说保存到txt中
fb.write(chapter_title)
fb.write('\n')
fb.write(chapter_content)
fb.write('\n')
print(chapter_url,chapter_title)