首页 编程教程正文

爬取笔趣看小说

piaodoo 编程教程 2020-02-22 22:14:39 1194 0 python教程

本文来源吾爱破解论坛

之前看过一位老哥的帖子,想学习学习,就在那位老哥的代码上进行修改,换了一个网站,减小了一点需求。模仿了一下,发现最后生成txt格式的文本,排版有点问题,我试了一下,发现解决不了,放弃了。哪位大佬知道原因,指导一波,感谢。[Python] 纯文本查看 复制代码

import os, requests, re
from time import sleep
from bs4 import BeautifulSoup
from random import uniform


# 网址解析
def url_open(url):
    headers = {}
    headers[
        "User-Agent"] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"
    response = requests.get(url, headers=headers)
    response.encoding = "gbk"  # 该网站的编码格式:utf-8
    html = response.text
    return html
def replaceNovel(content):
    #用来进行页面排版,最后还是不太理想,不知道为什么没有向左对齐,第一行移动,下一行也移动
    temp=content.replace('app2();','',2)
    mode=r'\([url]https://www.biqukan.com.[/url]+wap.biqukan.com'
    src=re.sub(mode,'',temp,flags=re.S)
    final=src.replace('。  ','。\n    ',50)
    return final
# 小说内容获取与保存
def get_and_save_data(novel_url):
    chapters_url_all=[];
    html_1 = url_open(novel_url)
    soup_1 = BeautifulSoup(html_1, "html.parser")
    nodes=soup_1.dl.find_all("dd")
    novel_name=soup_1.find(class_="info").h2.text;
    print(novel_name)
    flag = False
    prefix=re.findall(r'(.+)m/',novel_url)[0]
    prefix=prefix+"m"
    for node in nodes:
        url=node.a["href"]
        text=node.a.text
        if text[0:3]=='第一章':
            flag=True
        if flag is True:
            chapters_url_all.append(prefix+url)
    #print(chapters_url_all)
    # 逐页打开小说章节网址并获取内容保存
    for each in chapters_url_all:
        chapters_url =each
        html = url_open(chapters_url)

        soup = BeautifulSoup(html, "html.parser")
        chapters_name = soup.find(class_="content").h1.text  # 抓取章节名称
        print("正在下载《%s》:%s" % (novel_name, chapters_name))

        # 小说内容抓取
        content = soup.find("div", id="content").text
        contents=replaceNovel(content)
        #print(contents)
        with open("%s.txt" % novel_name, "a", encoding="utf-8") as g:
            g.write("\n" * 3 + "                               " + chapters_name + str("\n") * 3)
            #g.write("    " + contents)
            g.write(contents)
        #break
        slee_time = uniform(0.35, 0.75)
        sleep(slee_time)

    print("小说%s已下载完毕" % novel_name)
    sleep(2)

def main():
    # 设置工作路径
    path = r'd:\Pythontest'
    if os.getcwd() != path:
        if os.path.exists(path) == False:
            os.mkdir(path)
            os.chdir(path)
        else:
            os.chdir(path)
    #这个地址取你要爬的小说地址,我在站内搜索结果查不到,只能通过去百度搜小说名,之后进入页面
    root_url = "https://www.biqukan.com/73_74917/"
    get_and_save_data(root_url)


if __name__ == "__main__":
    main()

格式.JPG (15.9 KB, 下载次数: 1)

下载附件  保存到相册

2020-1-19 15:34 上传

格式.JPG

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7907.html

搜索