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)