python爬取网站的小说

 

截图

034SHA.png 034k38.png

源代码

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>,&nbsp等标签
    # print(chapter_content)

    #作数据的清洗
    chapter_content = chapter_content.replace('&nbsp;','')
    chapter_content = chapter_content.replace('<br />','')
    chapter_content = chapter_content.replace('&amp;t','')
    chapter_content = chapter_content.replace('&emsp;','')
    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)
相关文章
相关标签/搜索