利用Python爬取《我的微信连三界》

发布于 11 天前  24 次阅读


环境

源码

import requests #导入HTTP的包
import re #导入正则表达式
#输入URL
url = "http://www.jingcaiyuedu.com/novel/GLSmM4.html"

#告诉浏览器,我是通过浏览器访问,防止403错误
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"}

#get发送请求
#headers设置信息头
response = requests.get(url,headers = headers)

#将网页编码转化为UTF-8
response.encoding = 'UTF-8'

#获取网站源码
html = response.text

#获取小说的题目,r代表之后的文字全部输入什么读入什么不需要在进行转义
# .代表匹配转义字符以外的任意字符,.只占一个字符位
# ?代表匹配尽可能少的匹配所搜索字符
# *代表匹配前面的子表达式多次
#.*?尽可能短的找到答案
title = re.findall(r'<meta property="og:title" content="(.*?)"/>',html)[0]

#从整个网页的html中截取出包括章节URL和章节名字的一部分
#将网页中含有这一段的每一部分保存在列表中,其中0是最新章节,1是全部章节
dl = re.findall(r'<dl class="panel-body panel-chapterlist">(.*?)</dl>',html,re.S)[1]

#将dl中章节的URL和章节名称保存在列表里
aill = re.findall(r'<a href="(.*?)">(.*?)</a>',dl)

#新建文件保存小说内容
#{title}.txt代表文件名字
#w代表写入模式
#encoding = "utf-8"代表文件的编码方式
# f 用于格式化字符串
f = open(f"{title}.txt", "w", encoding="utf-8")

#循环每一个章节,分别去下载
for i in aill:

    #章节的地址和章节的名字
    book_url,book_name = i

    #拼接章节地址
    book_url = f"http://www.jingcaiyuedu.com{book_url}"

    #获取章节
    book_response = requests.get(book_url,headers = headers)
    book_response.encoding = "utf-8"
    book_html = book_response.text

    #提取章节内容
    book_content = re.findall(r'<div class="panel-body" id="htmlContent">(.*?)</div>',book_html,re.S)[0]

    #将空格替换为空
    book_content = book_content.replace(' ','')

    #将 替换为空
    book_content = book_content.replace(' ','')

    #将<br />替换为空
    book_content = book_content.replace('<br />','')

    #将<br/>替换为空
    book_content = book_content.replace('<br/>','')

    #<br>替换为空
    book_content = book_content.replace('<br>','')

    book_content = book_content.replace('<p>书友们,我是讲古书生,推荐一个小说公众号,小蚂蚁追书,支持小说下载、听书、零广告、多种阅读模式。请您关注微信公众号:xiaomayizhuishu(长按三秒复制)书友们快关注起来吧!</p>','')
    #写入文件
    f.write(f"{book_name}\n")
    f.write(f"{book_content}\n")
    print(book_name)

源码下载

后续会补充上代码介绍(也可能咕咕咕?)

欢迎指出不足