Python爬取书包网文章实战总结

Python爬取书包网文章实战总结这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入爬取书包网文…

大家好,又见面了,我是你们的朋友全栈君。

python爬取书包网文章总结

今天闲来无事去看小说,但是发现没办法直接下载,所以呢就用python爬虫来下载一波了,哈哈…

爬取的是这篇小说:剑破九天(是不是很霸气,话不多说,开始…)

总体思路步骤分为以下三步:
1.获得文章的每个章节链接地址
2.获得章节内容
3.保存到指定位置

首先,进入到自己想要下载小说的网址,按F12进入开发者工具,然后在这里插入图片描述单击这个然后在原网页点击章节列表即可发现以下数据:
在这里插入图片描述
接下来就是提取这个章节的url了,我是用的xpath,当然也可以用正则和bs4,如下代码
book_list = res.xpath('//div[@class="wp b2 info_chapterlist"]/ul/li')
此时book_list中就可以得到所有章节的url了(第一步完)

第二步就是获得章节具体内容了:
和第一步相似,用xpath即得到章节名和其中一章节内容
章节名称:name = res.xpath('//h1/text()')
章节内容:message_list = res.xpath('//dd[@id="contents"]/text()')

获得了自己需要的章节内容后就要进入第三步的保存了,不过在一开始保存时在100章左右时用以下代码出现了UnicodeEncodeError这个问题

    for m in message:
        with open("D:\英雄时刻\{name}.txt".format(name="剑破九天"),"a") as f:
            f.write(m)

然后发现是默认编码方式问题,其默认为gbk,所以需要改成“utf-8”的格式,代码如下:

    for m in message:
        with open("D:\英雄时刻\{name}.txt".format(name="剑破九天"),"a",encoding="utf-8") as f:
            f.write(m)

然后就可以喝一杯茶慢慢等爬取完成了,哈哈,以下为代码:


#剑破九天.text

import requests
import json
from lxml import html


def get_booklist(n):#获得章节地址
    url = "https://www.bookbao99.net/book/201706/05/id_XNTc5MDg2.html"
    header = { 
   "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"}
    response = requests.get(url,headers = header)
    response.encoding = "utf-8"
    res = html.fromstring(response.text)
    book_list = res.xpath('//div[@class="wp b2 info_chapterlist"]/ul/li')
    print(len(book_list))#章节个数
    for book in book_list:#遍历所有章节
        try:
            t = book.xpath('a/@href')
            book_url = "https://www.bookbao99.net" + t[0]
            get_message(book_url)
            print("第{n}章爬取完毕".format(n=n))
            n += 1
        except UnicodeEncodeError:
            print("出现一个错误")
        continue


def get_message(url):#提取每个章节内容
    header = { 
   
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"}
    response = requests.get(url,headers = header)
    response.encoding = "utf-8"
    res = html.fromstring(response.text)
    name = res.xpath('//h1/text()')
    n = '\n'+name[0]+'\n\n'
    #print(name[0])
    message_list = res.xpath('//dd[@id="contents"]/text()')
    message_list.insert(0,n)
    #print(message_list)
    save_book(message_list)


def save_book(message):#保存
    for m in message:
        with open("D:\英雄时刻\{name}.txt".format(name="剑破九天"),"a",encoding="utf-8") as f:
            f.write(m)


if __name__ == "__main__":
    n = 1
    get_booklist(n)

是不是美滋滋。
最后呢,欢迎一起讨论爬虫哟~~~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148487.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 卡盟网站程序源码,支持无限分站,货源共享「建议收藏」

    卡盟网站程序源码,支持无限分站,货源共享「建议收藏」服务器系统:cenos7.x64位(购买vps都知道ba?安装7.x以上系统)宝塔安装命令:bt.cn(自行获取)(baota我已经安装好了,接下来给大家演示如何操作搭建卡信乐)ssh输入宝塔命令会自动安装好自己查看一下登陆地址和账号密码就可以登陆面板后安装apache2.4+mysql5.5+php5.6phpadmin4.7(应该都会安装把!)登陆宝塔,打开网站的根目录的home文件夹,上传源码然后解压上传好后解压文件修改vhost文件里的域名创建一个数据库yunos数据库

    2022年8月13日
    3
  • Android移动应用程序开发

    Android移动应用程序开发

    2021年10月2日
    273
  • 设置java编译级别

    设置java编译级别右键项目—->properties—–>JavaComplier—->javaCompilancelevel
    —->1.6

    2022年6月1日
    42
  • mac navicat激活码【2021免费激活】

    (mac navicat激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~MLZPB5EL5Q-eyJsaWNlb…

    2022年3月21日
    67
  • Stimulsoft Reports.Web.JS 2022.2.5

    Stimulsoft Reports.Web.JS 2022.2.5Stimulsoft2022.2.5Publishedon13May2022Reports.WebReports.NetReports.WpfReports.JSReports.PHPReports.JavaReports.BlazorReports.AngularDashboards.WEBDashboards.WINDashboards.JSDashboards.PHPBIDesignerBICloudBIServerN..

    2022年7月26日
    8
  • 探讨PMI测量配置对5G下行速率的影响

    探讨PMI测量配置对5G下行速率的影响问题描述 当前 5GPMI 测量配置均为 8P4B 那么什么是 8P4B 另外为什么功能开启后能提升下行速率 问题分析 首先简单回答 8P4B 是一组下行参考信号 CSI RS UE 测量 CSI RS 信号用于给基站反馈下行 CQI PMI RI CRI 等信息 当基站读到信息后会给 UE 分配最合适的 MCS TBSize RB 资源等调度相关的参数 从而使 UE 的下载性能达到最佳 一 8PP 是 port 的缩写 就是 8 个端口 这里的端口是逻辑天线端口 下图是按照目前中兴推荐配置后的一个 RB 内的 8 个端口

    2025年9月4日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号