Python-爬虫 (BS4数据解析)

news/2024/4/27 17:43:23/文章来源:https://blog.csdn.net/dodamce/article/details/126676421

文章目录

  • 1. BS4数据解析常见方法
  • 2.BS4数据解析,爬取豆瓣电影属性

1. BS4数据解析常见方法

BS4数据解析方法是把需要的数据进行截取。处理数据的时间比较长

测试用网页:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>模拟登录</title>
</head>
<body background="e6fa7ebdb49b3f57569742132926fc4d.jpg" style="background-size: cover"><h1 style="text-align: center">欢迎注册</h1><h3 style="text-align: center">好好学习,天天向上</h3><form action="" method="post" style="text-align:center"><input name="user" placeholder="昵称" type="text"><br><br><input name="password" placeholder="密码" type="text"><br><br><input name="XXX" value="1" type="radio">我同意<a href="https://ti.qq.com/agreement/index.html">服务协议</a><a href="https://rule.tencent.com/rule/preview/3fd52bde-6555-453b-9ab8-c5f1f3d22c62">隐私保护协议</a><br><br><input type="submit" value="立即注册"></form>
</body>
</html>
from bs4 import BeautifulSoupfile = open("模拟登录.html", "r", encoding='utf-8')
response = file.read()
file.close()html_data = BeautifulSoup(response, 'lxml')
print(html_data.h1)  # 获取h1标签代码

在这里插入图片描述
可见,直接获取h1标签内的所有内容

获取h1标签中的属性

print(html_data.h1.attrs) 

在这里插入图片描述
获取h1标签具体属性

print(html_data.h1['style']) 

在这里插入图片描述
获取title标签下的文字

print(html_data.title.text)

在这里插入图片描述
找所有满足要求的数据html_data.find_all(‘标签’,‘属性’)

print(html_data.find_all('body', style="background-size: cover"))

在这里插入图片描述
最后·如果由多个满足条件的标签,以列表的形式返回

2.BS4数据解析,爬取豆瓣电影属性

这里主要以练习BS4数据处理为目标,所以整个过程比较繁琐

import requestsfrom bs4 import BeautifulSoupurl = "https://movie.douban.com/subject/1292052/"headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 ""Safari/537.36 "
}response = requests.get(url, headers=headers)# print(response.text)
'''
爬取豆瓣电影详情页数据
1、导演,2、演员,3、类型
4、国家,5、语言,6、上映时间
'''def WritMsg(_file, iterable):for _msg in iterable:StrForWrit = _msg.text_file.write(f" {StrForWrit} ")html_data = BeautifulSoup(response.text, 'lxml')file = open("msg.txt", "w", encoding="utf-8")# 电影名
file.write("电影名:\n")
file.write(html_data.find('span', property="v:itemreviewed").text)
file.write("\n--------------------------\n")# print(html_data.find_all('div', id="info"))
html_data = html_data.find_all('div', id="info")[0]# 导演
write = html_data.find_all('a', rel="v:directedBy")[0].text
file.write(f"导演:\n{write}\n--------------------------\n")
# 演员
file.write("演员:\n")
msg = html_data.find_all('span', class_='attrs')[2]
# 每隔五个人换行
msg = msg.find_all('a')
flag = 0
for name in msg:if flag == 5:file.write("\n")flag = 0file.write(f"{name.text}|")flag += 1
file.write("\n--------------------------\n")# 类型
file.write("电影类型:\n")
WritMsg(file, html_data.find_all('span', property="v:genre"))
file.write("\n--------------------------\n")# 制片国家/地区
dic = {}
write = html_data.text
for cheat in write.split('\n'):array = cheat.split(':')if len(array) > 1:dic[array[0]] = array[1]
file.write(f"制片国家/地区:\n{dic['制片国家/地区']}")
file.write("\n--------------------------\n")# 语言
file.write(f"语言:\n{dic['语言']}")
file.write("\n--------------------------\n")# 上映时间
file.write("上映时间:\n")
# print(html_data.find_all('span', property="v:initialReleaseDate")[0].text)
WritMsg(file, html_data.find_all('span', property="v:initialReleaseDate"))
file.write("\n--------------------------\n")file.close()

运行结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_5192.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zookeeper知识点扫盲

zookeeper是什么 引用官网的描述&#xff0c; ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. All of these kinds of services are used in some form or a…

express演示前端解决跨域的方法jsonp、cors

1.jsonp jsonp全称 JSON with Padding 即json外面包了一层js函数外衣&#xff0c;jsonp主要是利用了html中<script>等带有src属性的标签进行服务器请求时可以不受跨域影响 ①直接fetch请求 客户端代码 <!DOCTYPE html> <html lang"en"><head…

数据仓库---Hive

1. 数据仓库 1.1 概念 一个非常规范标准的定义是:数据仓库是一个面向主题的、集成的、相对稳定的、反应历史变化的数据集合,用于支持管理决策。 1.2 根本目的 数据仓库的根本目的是为了支持企业内部的商业分析和决策,也即企业相关的经营管理可以基于数据仓…

Java的接口以及接口与抽象类区别

java的接口 产生的背景 有时候必须从几个类中派生出一个子类&#xff0c;继承他们所有的方法&#xff0c;java不支持多继承&#xff0c;于是就有接口 当抽象类中全是抽象方法时&#xff0c;为了简化abstract关键字&#xff0c;于是就有了接口 特点 接口用interface实现 接口中…

22-09-02 西安 JVM 类加载器、栈、堆体系、堆参数调优、GC垃圾判定、垃圾回收算法、对象的finalize机制

JVM入门 1、JVM结构图 JVM是运行在操作系统之上的&#xff0c;它与硬件没有直接的交互 方法区&#xff1a;存储已被虚拟机加载的类元数据信息(元空间) 堆&#xff1a;存放对象实例&#xff0c;几乎所有的对象实例都在这里分配内存 虚拟机栈(java栈)&#xff1a;虚拟机栈描述…

springboot简单使用(4)

1.9 第九章 Thymeleaf 模版 1.9.1 认识 Thymeleaf Thymeleaf 是一个流行的模板引擎,该模板引擎采用 Java 语言开发 模板引擎是一个技术名词,是跨领域跨平台的概念,在 Java 语言体系下有模板引擎,在 C#、PHP 语言体系下也有模板引擎,甚至在 JavaScript 中也会用到模板引擎技…

每个架构师都值得拥有的一份Netty开发实战(附带面试专题)

前言 本书循序渐进的地介绍了 Netty各个方面的内容。 本书共分为 4 个部分&#xff08;共15章&#xff09;&#xff1a; 第一部分详细地介绍 Netty 的相关概念以及核心组件&#xff1b;第二部分介绍自定义协议经常用到的编解码器&#xff1b;第三部分介绍 Netty 对于应用层高…

线程相关方法

1. wait&#xff0c;notify&#xff0c;notifyAll 1.1wait原理 1.2用法 阻塞阶段 让线程暂时休息&#xff0c;等到时机成熟再唤醒继续运行。 在对象执行wait方法的时候&#xff0c;线程必须拥有这个对象的monitor锁&#xff0c;然后释放锁&#xff0c;进入阻塞状态。 唤醒阶段…

如何让 ABAP 报表在后台作业的模式下运行

本教程迄今为止我们介绍的各种 ABAP 程序的编写,都是在事物码 SE38 或者 SE80 里完成之后,直接点击工具栏的执行按钮,或者使用 F8 快捷键来执行的: 以这种方式启动的 ABAP 程序,是以在线方式(online)运行的,有时也称 联机 模式。 也就是说,如果在执行 ABAP 程序的过程中…

利用 SSH 完成 Git 与 GitHub 的绑定

如上图所示,进入Settings页面后,再点击SSH and GPG Keys进入此子界面,然后点击New SSH key按钮:在「史上最简单的 GitHub 教程」中,我们已经对 GitHub 有了一定的了解,包括创建仓库、拉分支,或者通过Clone or download克隆或者下载代码;我们也下载并安装了 Git,也了解…

Java开发五年跳槽涨薪从12K到35K,靠“狂刷”九遍面试题

朋友做Java开发三年多的时间了&#xff0c;在老东家勤勤恳恳工作了三年多&#xff0c;工资也就是从刚开始的8K涨到了12K&#xff0c;天天给我吐槽他的工资低。2020年年初开始就一直在各种地方找资源&#xff0c;刷面试题&#xff0c;想要“骑驴找马”&#xff0c;恰恰又是在疫情…

jupyter 基本用法

前一段时间&#xff0c;同事帮我在超算服务器安装了一套 jupyter notebook 软件&#xff0c;甚是好用。但用了几天后&#xff0c;忽然就不能用了。今天研究了一下&#xff0c;发现是服务器程序关闭了&#xff0c;所以我在浏览器端的网页就打不开了。今天仔细研究了一下&#xf…

Unity入门01——unity界面基础

1.工程文件夹 1.Assets&#xff1a;工程资源文件夹&#xff08;(美术资源&#xff0c;脚本等等) 2.Library&#xff1a;库文件夹(Unity自动生成管理) 3.Logs&#xff1a;日志文件夹&#xff0c;记录特殊信息(Unity自动生成管理) 4.obj&#xff1a;编译产生中间文件(Unity自动生…

【05】Yarn

125_尚硅谷_Hadoop_Yarn_课程介绍 126_尚硅谷_Hadoop_Yarn_基础架构 整个集群资源的老大&#xff1a;ResourceManager 单个结点资源的老大&#xff1a;NodeManager 每一个作业任务的老大&#xff1a;ApplicationMaster 相应的容器&#xff08;相当于一个小电脑&#xff09;&…

DolphinScheduler实例表备份、清理

&#x1f60b;DolphinScheduler实例表备份、清理 &#x1f44a;一、前言 DolphinScheduler至今已经在项目中使用了将近一年&#xff0c;工作流实例和任务流实例都积累了百万级的数据量。在查看工作流实例和任务实例的时候&#xff0c;都要等待后台去查询数据库&#xff0c;感觉…

【电商项目实战】拦截器(详细篇)

&#x1f341;博客主页&#xff1a;&#x1f449;不会压弯的小飞侠 ✨欢迎关注&#xff1a;&#x1f449;点赞&#x1f44d;收藏⭐留言✒ ✨系列专栏&#xff1a;&#x1f449;SpringBoot电商项目实战 ✨学习社区&#xff1a; &#x1f449;不会压弯的小飞侠 ✨知足上进&#x…

Python tkinter 制作一个经典的登录界面和点击事件

前言Tkinter(即 tk interface) 是 Python 标准 GUI 库,简称 “Tk”;从本质上来说,它是对 TCL/TK 工具包的一种 Python 接口封装。Tkinter 是 Python 自带的标准库,因此无须另行安装,它支持跨平台运行,不仅可以在 Windows 平台上运行,还支持在 Linux 和 Mac 平台上运行…

怎样在LaTeX中方便输入带圆圈的数字

这个也是这两天修改别人论文的时候得到的经验。正如这里所说&#xff1a;latex 如何添加圆圈数字&#xff1f;_Tsingke的博客-CSDN博客 如果使用\textcircled&#xff0c;数字编号大的时候&#xff0c;数字会跑到圆圈外面。但是上面这篇博客的解决方案太复杂了&#xff0c;就像…

电子数据取证-流程与技术

推荐公众号&#xff1a;安全猎人 专注于全栈攻防&#xff0c;学习笔记等&#xff1b; 原文url&#xff1a;https://mp.weixin.qq.com/s/hwpBcp-55ycXnSdObEffGg 电子数据取证流程与技术 根据某大佬经验&#xff0c;汇总出一系列取证流程、理论和模型&#xff1b; 在模型中&am…

pacman 升级软件包提示 “failed to commit transaction (invalid or corrupted package)“

很久没打开 WSL 2 里面的 Arch Linux, 想着更新一下软件包, 执行 pacman -Syu, 遇到 “signature is marginal trust” “failed to commit transaction (invalid or corrupted package)” 等错误. 观察输出的信息, 似乎提到了 “签名” “信任” 的问题 (signature … is marg…