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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JS判断值是否是数字

    JS判断值是否是数字随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、博主微信(guyun297890152)、QQ技术交流群(183198395)。from:https://www.cnblogs.com/maxm/p/6743989.html1.使用isNaN()函数isNaN()的缺点就在于null、空格以及空串会被按照0来处理NaN:No…

    2022年6月16日
    22
  • 彻底明白vue双向绑定底层原理(源码分析)

    彻底明白vue双向绑定底层原理(源码分析)vue是一个mvvm框架,双向绑定是vue的一个核心功能,所谓双向绑定就是当试图发生改变的时候传递给VM(ViewModel),让数据得到更新,当数据发生改变的时候传给VM(ViewModel),使得视图发生变化!概念都知道,但是vue怎么做到的呢?看下面的一张图(图是搬运别人的)可能你现在看不明白,observer是什么东西,watchter,Dep又是什么东西?没有关系,接下来只要你看完我这篇文章,保证给你整的明明白白!看上图,从左边开始newMVVM其实就是我newVue(),我们一

    2022年9月14日
    2
  • 信息系统建模方法_游戏设计师需要掌握什么技能

    信息系统建模方法_游戏设计师需要掌握什么技能信息系统建模方法周中元(本文转载自软件工程专家网www.21cmm.com,不代表gigix观点)   大型信息系统通常十分复杂,很难直接对它进行分析设计,人们经常借助模型来设计分析系统。模型是现实世界中的某些事物的一种抽象表示。抽象的含义是抽取事物的本质特性,忽略事物的其他次要因素。因此,模型既反映事物的原型,又不等于该原型。模型是理解、分析、开

    2022年9月23日
    1
  • SPSS-单因素方差分析(ANOVA) 案例解析[通俗易懂]

    SPSS-单因素方差分析(ANOVA) 案例解析[通俗易懂]继续以上一期的样本为例,雌性老鼠和雄性老鼠,在注射毒素后,经过一段时间,观察老鼠死亡和存活情况。研究的问题是:老鼠在注射毒液后,死亡和存活情况,会不会跟性别有关?样本数据如下所示:(a代表雄性老鼠

    2022年7月3日
    38
  • python+opencv图像模板匹配—多模板匹配

    python+opencv图像模板匹配—多模板匹配

    2021年10月6日
    43
  • Google资深工程师深度讲解Go语言-错误处理和资源管理(七)「建议收藏」

    Google资深工程师深度讲解Go语言-错误处理和资源管理(七)

    2022年2月16日
    47

发表回复

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

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