网站首页 > 技术文章 正文
以下用最简单的示例来演示爬取某小说网的类目名称。
新建一个retest.py,全文代码如下,读者可以复制后直接运行。代码中我尽量添加了一些注释便于理解。
需要说明的一点,该小说网站如果后续更新改版了,文中截取字符的正则表达式可能需要根据做一些变动,才能成功爬取到我们想要的名称。
一、小说网站首页
我们想爬取的是首页-》全部分类 菜单下的小说分类名称
二、retest.py代码
# -*- coding: UTF-8 -*-
import re
import urllib.request
import codecs
import time
# 使用re 与 urllib 包简单爬取小说种类名称
class Retest(object):
def __init__(self):
self.getText()
# 爬取方法
def getText(self):
print("准备开始爬取")
# 请求网站首页,获取页面返回内容
url = "https://www.readnovel.com"
response = urllib.request.urlopen(url, timeout=5)
result = response.read().decode('utf-8') #使用utf-8 避免中文乱码
print(result) #网页内容
# 网页中的原字符串
# '现代言情 '
# 通过正则表达式与固定字符组合,过滤后得到新字符串
pr = '.*?;.*? '
print("过滤后的文本:=====")
pattern = re.compile(pr) #将正则表达式编译为正则对象
movieList = pattern.findall(result) #通过正则表达式从源字符串中截取,得到一个movieList数组
print(movieList)
# 使用map函数,将movieList数组中各元素,通过lambda匿名函数内的方法,过滤掉其他标签字符,仅保留我们需要的类目中文标题如“现代言情”
moveTitleList = map(lambda x: x.split("")[1].split("")[0], movieList)
# 最后,依次打印出各类目名称
for movie in moveTitleList:
print("%s\r\n" % movie)
if __name__ == '__main__':
Retest()
三、运行后结果
四、分析说明
下面结合上述代码再做一些补充说明,便于我们初学者更易于理解。
1.查找关键字,正则表达式获取字符串
我们在网站首页,查看前端页面源代码,并查找到关键字
红线标注的就是我们需要通过正则表达式从全文中定位并截取的字符串。
对应的正则表达式如下:
.*?;.*?
我们只需要将固定不变的关键字符串与可变的组合在一起即可。
“30020”、“”、“现代言情”这三个是动态的,我们用“.*?”代替,代表任意字符串。然后通过pattern.findall得到一个movieList数组,数组内的成员如下。
[
'
现代言情 ','
古代言情 ','
浪漫青春 ','
玄幻言情 ','
仙侠奇缘 ','
悬疑 ','
科幻空间 ','
游戏竞技 ','
?轻小说 ']
2.二次过滤
我们仅需要类目中文名称,所有需要对得到的数据做二次过滤。
moveTitleList = map(lambda x: x.split("")[1].split("")[0], movieList)
map可以从movieList数组中逐个成员进行函数处理。而我们这里使用lambda定义了一个匿名函数
lambda x: x.split("")[1].split("")[0],意思是在成员中获取“”第二个元素,再获取""第一个元素。即
3.尾声
以上演示了如何爬取网页中的某一组数据,读者掌握理解后,可以自己尝试爬取其他数据,如推荐栏目下的书名清单等。
如果我的文章解决了你的问题,欢迎点赞、收藏或评论。
猜你喜欢
- 2025-05-08 使用Python爬取给定网页的所有链接(附完整代码)
- 2025-05-08 python爬取电子课本,送给居家上课的孩子们
- 2025-05-08 Python爬虫实战,selenium模拟登录,Python实现抓取某东商品数据
- 2025-05-08 「2022 年」崔庆才 Python3 爬虫教程 - aiohttp 的基本使用
- 2025-05-08 Python爬虫实战:爬取动态网页数据
- 2025-05-08 python爬虫怎么副业接单(python爬虫在哪接单)
- 2025-05-08 「2022 年」崔庆才 Python3 爬虫教程 - 网页解析利器 XPath 初体验
- 2025-05-08 惊呆了!Python还能这样用?爬取网页数据并存储至本地数据库
- 2025-05-08 Python爬虫:如何实现异步加载爬取图片?
- 2025-05-08 使用ChatGPT编码抓取网页数据成功
- 263℃Python短文,Python中的嵌套条件语句(六)
- 262℃python笔记:for循环嵌套。end=""的作用,图形打印
- 261℃PythonNet:实现Python与.Net代码相互调用!
- 255℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 255℃Python实现字符串小写转大写并写入文件
- 113℃原来2025是完美的平方年,一起探索六种平方的算吧
- 94℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 87℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)