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

news/2024/12/23 1:31:35/

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

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

 

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

代码代码:

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;但相信很多朋友和我一样在听完前面的部分发现信…