爬爬今天爬小说————爬虫练习

news/2024/4/19 16:56:18/

爬不同的的小说,会有略微的改动

我今天这个是从一章的提前到全部的提前。

 

在我们电脑里面了,想怎么看就怎么看。

代码代码:

import re
import requestsheaders = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0"
}
mainUrl = "https://www.xzmncy.com/list/53005/"
mainText = requests.get(mainUrl,headers=headers).text
#<dd><a href="/list/.*.html" title=".*?">.*?</a></dd>
my_re = re.findall('<dd><a href="(.*?)" title="(.*?)">.*?</a></dd>',mainText)
for info in my_re:url = "https://www.xzmncy.com"+info[0]response = requests.get(url,headers=headers).textcontent = re.findall('<div id="htmlContent"><p>(.*?)</p>', response)if content == []:continueelse:con = content[0]con = con.replace("<br>","\n")Mcontent = '\n\n'+info[1]+'\n\n'+con+"\n--=====================---------------\n"print(Mcontent)f = open('逆命相师(全).txt', mode='a', encoding='utf-8')f.write(Mcontent)

唉代码好少,但是挫折不断,一会这里报错哪里报错,有的章的写入方式会有区别。

说一下代码:

1.这个头可以不用,因为是笔趣阁 哈哈哈!!!

headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0"
}

2.

这个是章节的网址,并对章节的进行解析。

mainUrl = "https://www.xzmncy.com/list/53005/"
mainText = requests.get(mainUrl,headers=headers).text

3.利用正则表达式找到网址和题目

my_re = re.findall('<dd><a href="(.*?)" title="(.*?)">.*?</a></dd>',mainText)

4.加入网址的正确格式,进行解析

for info in my_re:url = "https://www.xzmncy.com"+info[0]response = requests.get(url,headers=headers).text

5.

上面两个就是拿到内容!

6.

这个是我临时加的,奶的有问题。每个情况不一样。

content = re.findall('<div id="htmlContent"><p>(.*?)</p>', response)if content == []:continue

7.

content[0]是一个字符串

进行字符串的替换,就行

然后是写入

con = content[0]con = con.replace("<br>","\n")Mcontent = '\n\n'+info[1]+'\n\n'+con+"\n--=====================---------------\n"print(Mcontent)f = open('逆命相师(全).txt', mode='a', encoding='utf-8')f.write(Mcontent)

OK了,昨天搞得唉,下面的与这个无关就是一个失败的作品


import re
import os
import requests
from bs4 import BeautifulSouplist_1=[]
list_2=[]
list_3=[]
list_4=[]
list_5=[]
list_6=[]url = "https://b.faloo.com/1389943.html"
headers = {"Cookie":"host4chongzhi=https%3a%2f%2fwww.faloo.com%2f; readline=1; fontFamily=1; fontsize=16; font_Color=666666; curr_url=https%3A//b.faloo.com/1389943.html; bgcolor=%23FFFFFE; vip_img_width=5","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0"
}html = requests.get(url,headers=headers)
html=html.text
soup = BeautifulSoup(html,'html.parser')
all_ico=soup.find(class_="DivTable")
#名字
title = soup.find(class_="fs23 colorHei")
title = title.string
#print(f"小说名:{title}")
list_1.append(title)
#章节名
all_title_a = all_ico.find_all("a")
for i in all_title_a:s_title = i["title"]s_title = s_title[:-11:1]s_title = s_title[15::1]#print(s_title)list_2.append(s_title)
#章节URLhref = i["href"]list_3.append(href)# https://b.faloo.com/1389943.htmlhref_url = 'https:' + hreflist_4.append(href_url)

这个就是没有用正则表达式用的Beautifulsoup这个解析,然后找class类,然后在找class,然后在找“a”,然后把“title”找出来,存到列表中,然后把“herf找出来,在组合”,然后存列表。

其实这个就是已经拿到内容了,然后因为错误是在不行,就没有继续了。因为re更为的方便,直接找内容,然后取列表的【0】就可以拿到,字符串的文章内容。所以就跳过了。

发现用css也很简单


下面这个是提前单章的:
 

import requests
import reurl = "https://www.biqg.cc/book/6909/1.html"
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0"
}response = requests.get(url,headers=headers).textcontent = re.findall('<div id="chaptercontent" class="Readarea ReadAjax_content">(.*)',response)[0]content = content.replace("<br /><br />","\n")
print(content)
f=open('人道大圣.txt',mode='a',encoding='utf-8')
f.write(content)

下面还是:

import requests
import reurl = "https://www.xzmncy.com/list/53005/24924612.html"
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0"
}response = requests.get(url,headers=headers).text
content = re.findall('<div id="htmlContent"><p>(.*?)</p></div>',response)[0]
content = content.replace("<br>","\n")
print(content)f=open('逆命相师.txt',mode='a',encoding='utf-8')
f.write(content)

区别是一个是学习,一个是实战。

OK结束。开始今天的学习了


http://www.ppmy.cn/news/1349998.html

相关文章

Java图形化界面编程——弹球游戏 笔记

Java也可用于开发一些动画。所谓动画&#xff0c;就是间隔一定的时间(通常小于0 . 1秒 )重新绘制新的图像&#xff0c;两次绘制的图像之间差异较小&#xff0c;肉眼看起来就成了所谓的动画 。 ​ 为了实现间隔一定的时间就重新调用组件的 repaint()方法&#xff0c;可以借助于…

【每日一题】牛客网——链表分割

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有…

设计模式-状态模式 State

状态模式 一、简介概述二、有限状态机1、分支法2、查表法3、状态模式 三、重点回顾 一、简介概述 状态模式并不是很常用&#xff0c;但是在能够用到的场景里&#xff0c;它可以发挥很大的作用。 状态设计模式是一种行为型设计模式&#xff0c;它允许对象在其内部状态发生变化…

【Kubernetes】kubectl top pod 异常?

目录 前言一、表象二、解决方法1、导入镜像包2、编辑yaml文件3、解决问题 三、优化改造1.修改配置文件2.检查api-server服务是否正常3.测试验证 总结 前言 各位老铁大家好&#xff0c;好久不见&#xff0c;卑微涛目前从事kubernetes相关容器工作&#xff0c;感兴趣的小伙伴相互…

Tdesign 常用知识

Mock数据中的常见随机数&#xff1a; mock 数据中&#xff0c; 开头的是 Mock.js 的语法。Mock.js 是一个用于生成随机数据的库&#xff0c;它提供了一些特殊的语法&#xff0c;可以方便地生成各种类型的随机数据。 在这个 mock 数据中&#xff0c;使用了以下语法&#xff1a…

blender怎么保存窗口布局,怎么设置默认输出文件夹

进行窗口布局大家都会&#xff0c;按照自己喜好来就行了&#xff0c;设置输出文件夹如图 这些其实都简单。关键问题在于&#xff0c;自己调好了窗口布局&#xff0c;或者设置好了输出文件夹之后&#xff0c;怎么能让blender下次启动的时候呈现出自己设置好的窗口布局&#xff…

【doghead】uv_loop_t的创建及线程执行

worker测试程序,类似mediasoup对uv的使用,是one loop per thread 。创建一个UVLoop 就可以创建一个uv_loop_t Transport 创建一个: 试验配置创建一个: UvLoop 封装了libuv的uv_loop_t ,作为共享指针提供 对uv_loop_t 创建并初始化

中科大计网学习记录笔记(九):DNS

前言&#xff1a; 学习视频&#xff1a;中科大郑烇、杨坚全套《计算机网络&#xff08;自顶向下方法 第7版&#xff0c;James F.Kurose&#xff0c;Keith W.Ross&#xff09;》课程 该视频是B站非常著名的计网学习视频&#xff0c;但相信很多朋友和我一样在听完前面的部分发现信…

【每日一题】LeetCode——反转链表

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有…

假如程序员也分等级……

本次考试有10道题&#xff0c;一题10分&#xff0c;做完后可查看段位等级。 1.请问复制粘贴用什么快捷键&#xff1f; A.CtrlV,CtrlC B.CtrlC,CtrlV 2.计算机里用的是&#xff08; &#xff09;进制&#xff1f; A.二 B.十 3.对于输出“Hello world”正确的一项是&#…

ChatGPT高效提问—prompt常见用法(续篇八)

ChatGPT高效提问—prompt常见用法(续篇八) 1.1 对抗 ​ 对抗是一个重要主题,深入探讨了大型语言模型(LLM)的安全风险。它不仅反映了人们对LLM可能出现的风险和安全问题的理解,而且能够帮助我们识别这些潜在的风险,并通过切实可行的技术手段来规避。 ​ 截至目前,网络…

机器学习:过拟合和欠拟合的介绍与解决方法

过拟合和欠拟合的表现和解决方法。 其实除了欠拟合和过拟合&#xff0c;还有一种是适度拟合&#xff0c;适度拟合就是我们模型训练想要达到的状态&#xff0c;不过适度拟合这个词平时真的好少见。 过拟合 过拟合的表现 模型在训练集上的表现非常好&#xff0c;但是在测试集…

【ASP.NET Core 基础知识】--部署和维护--性能优化技巧

一、应用程序设计和架构优化 1.1 选择适当的设计模式 应用程序设计和架构优化是提高 ASP.NET Core 应用程序性能的重要方面之一。适当的设计模式是优化架构的关键之一。设计模式是解决特定问题的经验总结&#xff0c;能够提高代码的可读性、可维护性和可扩展性&#xff0c;从…

webpack5 常用插件使用

webpack5常用插件使用 1. CleanWebpackPlugin2. HtmlWebpackPlugin3. DefinePlugin4.CopyWebpackPlugin 1. CleanWebpackPlugin 问题&#xff1a;每次打包完都需要手动删除掉dist文件目录&#xff0c;使用CleanWebpackPlugin就可自动清除dist目录。作用&#xff1a;自动清除di…

Qt知识点总结目录

目录 一.Qt安装配置和创建项目二.Qt基础知识定时器QTimer信号和槽 零散问题Qt不支持OpenSSL解决方法Qt播放视频报错0x80040266 一.Qt安装配置和创建项目 Qt所有版本下载地址 Qt安装配置教程windows版&#xff08;包括&#xff1a;Qt5.8.0版本&#xff0c;Qt5.12&#xff0c;Q…

操作系统——内存管理(附带Leetcode算法题LRU)

目录 1.内存管理主要用来干什么&#xff1f; 2.什么是内存碎片&#xff1f; 3.虚拟内存 3.1传统存储管理方式的缺点&#xff1f; 3.2局部性原理 3.3什么是虚拟内存&#xff1f;有什么用&#xff1f; 3.3.1段式分配 3.3.2页式分配 3.3.2.1换页机制 3.3.2.2页面置换算法…

专业140+总分410+华南理工大学811信号与系统考研经验华工电子信息与通信,真题,大纲,参考书。

23考研已经落幕&#xff0c;我也成功的上岸华工&#xff0c;回首这一年多的历程&#xff0c;也是有一些经验想和大家分享一下。 首先说一下个人情况&#xff0c;本科211&#xff0c;初试成绩400分。专业课140。 整体时间安排 对于考研&#xff0c;很重要的一环就是时间安排&…

【Java】内置锁是什么?

内置锁&#xff08;也称为监视器锁或互斥锁&#xff09;是Java语言提供的一种基本的线程同步机制。在Java中&#xff0c;每个对象都自动持有一个内置的锁&#xff0c;这个锁也被称为对象的监视器锁&#xff08;monitor lock&#xff09;。当你使用synchronized关键字来同步一个…

UML之在Markdown中使用Mermaid绘制类图

1.UML概述 UML&#xff08;Unified modeling language UML&#xff09;统一建模语言&#xff0c;是一种用于软件系统分析和设计的语言工具&#xff0c;它用于帮助软件开发人员进行思考和记录思路。 类图是描述类与类之间的关系的&#xff0c;是UML图中最核心的。类图的是用于…

【数据库】索引的使用

【数据库】索引的使用 前言出发示例创建表Explain 查看sql执行计划where 查询解析无索引有索引 where oderBy 查询解析无索引有索引 总结 前言 在数据库设计过程中&#xff0c;常需要考虑性能&#xff0c;好的设计可以大大提高sql 语句的增删改查速度。在表的创建过程中&…