python 爬虫实战 | 下载一本小说

这篇具有很好参考价值的文章主要介绍了python 爬虫实战 | 下载一本小说。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 爬虫几个主要部分

  • 根据链接获取页面信息
  • 从页面信息获取需要的信息:正则匹配,bs4,xpath等
  • 保存:文件、数据库

最难得就是中间匹配部分,要针对每个网站的内容特点和要获取的信息综合选择合适的匹配策略。

其他重要方面:

  • 中文乱码怎么处理:主动设置编码格式
  • 如果需要很多页面,还要获取这些页面的链接列表。
  • 防止被屏幕:加header头,加随机访问间隔
  • 验证码:这个没办法

2. 爬虫实战

目的:爬取一本小说。先从目录页获取链接列表,再从每个页面获取文本,保存到本地文件。
环境:python3,jupyter notebook

(1) 获取url列表

import requests
import re
from bs4 import BeautifulSoup
import time,random

# 从目录页,获取链接列表
page="https://www.27k.net/read/63021"
headers = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
}
respose=requests.get(page, headers);
assert respose.status_code==200,'Error: requests.get'

soup=BeautifulSoup(respose.text,"lxml")
arr=soup.find_all("ul", attrs={"id":"chapterList"})[0].find_all("a")
arr

输出:
[<a href="/read/63021/24610005.html">第1章</a>,
 <a href="/read/63021/24610006.html">第2章</a>,
 <a href="/read/63021/24610007.html">第3章</a>,
...

(2) 从一个页面获取内容并保存

import requests
import re
from bs4 import BeautifulSoup
import time,random

# 为防被封,不能高频访问:模拟用户的点击间隔
def pause(seconds=2):
    #随机时间段后[2s,12s]执行
    pause=seconds+3*random.random()
    print('  sleep '+str(pause) + "second \n")
    time.sleep(pause)


def write2file(url):
    #1. get response
    headers = {
        "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
    }
    respose=requests.get(url, headers);
    assert respose.status_code==200,'Error: requests.get'


    #2. get info
    soup=BeautifulSoup(respose.text,"lxml")
    patterns=soup.find_all("div","txtnav")[0]

    #3. write to file
    fw=open('novel.txt','a');

    i=0
    for item in patterns:
        i=i+1
        if i<3: #过滤掉前面重复信息
            continue
        text=item.string
        if None != text:
            if text.strip() != "": #跳过全是空格的行
                #print("  "+text)
                text=re.sub("章\s{14}", "章\n", text)
                fw.write("  "+text)
    fw.write("\n\n\n");
    fw.close();

# #url0="https://www.27k.net/read/63021/%s.html"
# i=0
# for i in range(0,1):

#     url=url0 % str(24610005+i);
#     print(i, url)
#     write2file(url)
#     pause(1);

# print("end")

(3) 应用到批量url中

i=0
for ele in arr:
    i =i +1
    url ="https://www.27k.net" +ele.get("href")
    print(i, url)
    write2file(url)
    pause(1);

print("end") #284

等待程序运行结束(因为设置了随机等待时间,该示例需要几十分钟),就能在工作目录看到一个 txt 文件。
根据原网页,为该txt手动添加一些头尾信息,保存到手机,就可以阅读了。

比手动一个一个复制粘贴省力多了,还不容易出错。文章来源地址https://www.toymoban.com/news/detail-479953.html

到了这里,关于python 爬虫实战 | 下载一本小说的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python爬虫实战-批量爬取下载网易云音乐

    大家好,我是python222小锋老师。前段时间卷了一套  Python3零基础7天入门实战 https://blog.csdn.net/caoli201314/article/details/132882813 1小时掌握Python操作Mysql数据库之pymysql模块技术 https://blog.csdn.net/caoli201314/article/details/133199207 一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、se

    2024年02月05日
    浏览(60)
  • Python爬虫实战(六)——使用代理IP批量下载高清小姐姐图片(附上完整源码)

    本次爬取的目标是某网站4K高清小姐姐图片: 实现批量下载指定的图片,存放到指定文件夹中: Python:3.10 编辑器:PyCharm 第三方模块,自行安装: 爬虫使用代理IP的好处有以下几点: 轮换IP地址 :使用代理IP可以轮换IP地址,降低被封禁的风险,从而保持爬取的连续性

    2024年02月07日
    浏览(81)
  • Python网页爬虫爬取起点小说——re解析网页数据

    !!注意:我们获取到的网页响应数据,可能会与网页源代码中呈现的格式不同。因为有些网页文件是用JavaScript加载的,浏览器会自动将其解析成html文档格式,而我们获取到的内容是JavaScript格式的文档。所以获取到响应数据之后先要查看内容是否与网页源码中的一致,不一

    2024年02月04日
    浏览(42)
  • python爬虫篇:使用Selenium自动打开小说网页并自动浏览

    需求:python,pycharm,Selenium库,火狐或ie浏览器 文章目录 一、 自动打开小说网页并浏览 简单使用Selenium库,实现对浏览器的自动化操作 一、自动打开小说网页并浏览 方法:使用命令行下载或者在pycharm中下载 使用命令行下载:打开cmd终端,输入pip install selenium  在pycharm中下

    2024年02月10日
    浏览(39)
  • Python + ttkbootstrap 制作全网小说下载神器

    ttkbootstrap是一个基于Python的开源库,用于创建漂亮且交互式的GUI应用程序。它是在Tkinter框架之上构建的,提供了一系列的Widget组件和样式,可以帮助开发者快速构建现代化的用户界面。 今天做的是这个东西,蓝色的是进度条 所需模块 实例化创建应用程序窗口 搜索框 按钮和

    2024年02月13日
    浏览(24)
  • 用python从零开始做一个最简单的小说爬虫带GUI界面(2/3)

    目录 前一章博客 前言 主函数的代码实现 逐行代码解析 获取链接 获取标题 获取网页源代码 获取各个文章的链接 函数的代码 导入库文件 获取文章的标题 获取文章的源代码 提取文章目录的各个文章的链接 总代码 下一章内容 用python从零开始做一个最简单的小说爬虫带GUI界面

    2024年02月11日
    浏览(31)
  • 用python从零开始做一个最简单的小说爬虫带GUI界面(3/3)

    目录 上一章内容 前言 出现的一些问题 requests包爬取小说的不便之处 利用aiohttp包来异步爬取小说 介绍 代码 main.py  test_1.py test_3.py 代码大致讲解 注意 系列总结 用python从零开始做一个最简单的小说爬虫带GUI界面(2/3)_木木em哈哈的博客-CSDN博客 前一章博客我们讲了怎么通过

    2024年02月11日
    浏览(30)
  • 用python从零开始做一个最简单的小说爬虫带GUI界面(1/3)

    目录 下一章内容 PyQt5的配置  设置软件的快捷启动方式 1.        用于设计界面的程序 2.        将Qt Designer设计出来的ui文件转化为py文件 3.        可以把py文件打包成可执行的exe文件 4.        将ico图片放在qrc文件中,再将qrc文件转换成py文件,用于小工具的图

    2024年02月12日
    浏览(37)
  • 【Python爬虫框架】这5个Python爬虫框架你用过几个?最后一个秒杀全部

    Python语言拥有丰富的第三方库,使得Python成为了最流行的爬虫语言之一。而Python的爬虫框架更是让Python爬虫开发更加高效。在这篇文章中,我们将探讨5个最常见的Python爬虫框架,并分析它们的优缺点,帮助你更好地选择合适的框架。 Scrapy是Python爬虫领域最著名的框架之一。

    2024年02月08日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包