网站首页 > 技术文章 正文
以下用最简单的示例来演示爬取某小说网的类目名称。
新建一个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.尾声
以上演示了如何爬取网页中的某一组数据,读者掌握理解后,可以自己尝试爬取其他数据,如推荐栏目下的书名清单等。
如果我的文章解决了你的问题,欢迎点赞、收藏或评论。
- 上一篇: 利用Python爬虫实现30秒爬取500篇微信文章
- 下一篇: 爬虫原理和流程(爬虫程序原理)
猜你喜欢
- 2025-03-30 python 爬虫如何突破登录验证(python 爬虫 登录)
- 2025-03-30 奥力给!可以自己定义流程的图形化爬虫&自动化测试平台—Kspider
- 2025-03-30 Java爬虫原理(小白也能懂)(java爬虫入门)
- 2025-03-30 手把手教你用 node 写一个爬虫(node做爬虫)
- 2025-03-30 零基础上手秒杀系统:抢购接口隐藏 + 单用户限制频率
- 2025-03-30 使用CefSharp和Javascript实现网络爬虫
- 2025-03-30 安全知识丨关于网络爬虫的基础讲解
- 2025-03-30 细说小白学python爬虫过程中常见的反爬措施及解决思路(干货)
- 2025-03-30 「数据分析」2种常见的反爬虫策略,信息验证和动态反爬虫
- 2025-03-30 爬虫原理和流程(爬虫程序原理)
你 发表评论:
欢迎- 07-10Oracle 与 Google Cloud 携手大幅扩展多云服务
- 07-10分享收藏的 oracle 11.2.0.4各平台的下载地址
- 07-10Oracle 和 Microsoft 推出 Oracle Exadata 数据库服务
- 07-10Oracle Database@Azure 推进到南美等新区域并增加了新服务
- 07-10Oracle宣布推出 Oracle Database@AWS 的有限预览版
- 07-10Oracle与Nextcloud合作,推出主权云上的安全协作平台
- 07-10NodeRED魔改版连接MsSql、PostgreSQL、MySQL、OracleDB存储无忧
- 07-10对于企业数据云备份,“多备份”承诺的是成本更低,管理更高效#36氪开放日深圳站#
- 602℃几个Oracle空值处理函数 oracle处理null值的函数
- 594℃Oracle分析函数之Lag和Lead()使用
- 582℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 579℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 574℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 567℃【数据统计分析】详解Oracle分组函数之CUBE
- 554℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 548℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- Oracle 与 Google Cloud 携手大幅扩展多云服务
- 分享收藏的 oracle 11.2.0.4各平台的下载地址
- Oracle 和 Microsoft 推出 Oracle Exadata 数据库服务
- Oracle Database@Azure 推进到南美等新区域并增加了新服务
- Oracle宣布推出 Oracle Database@AWS 的有限预览版
- Oracle与Nextcloud合作,推出主权云上的安全协作平台
- NodeRED魔改版连接MsSql、PostgreSQL、MySQL、OracleDB存储无忧
- 对于企业数据云备份,“多备份”承诺的是成本更低,管理更高效#36氪开放日深圳站#
- 解读丨《归档文件整理规则》— 电子文件元数据存储
- Data Guard跳归档恢复的实践(dataguard failover)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (57)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)