如何利用 Beautiful Soup 爬取网页数据

简介: 如何利用 Beautiful Soup 爬取网页数据

定义

Python中的一个库,主要用于从网页爬取数据;


安装

pip install beautifulsoup4

1

四大对象

Beautiful Soup将复杂的HTML文档转换成树形结构,树中的每个节点都是Python对象,对象可归纳为以下4种;


Tag

同XML或HTML中的标签tag相同,tag属性可被增删修改,操作方法和字典一样,最常用的属性如下;


name

attributes

NavigableString

获取标签之后,用于获取标签内部的文字;


BeautifulSoup

表示一个文档的全部内容,大多数情况下都可以将它当作Tag对象,是一个特殊的Tag对象,可用于分别获取其类型、名称及属性;


Comment

Comment是一个中枢类型的NavigableString对象,输出内容不含注释符号;


#!/usr/bin/python3
# -*- coding:utf-8 -*-
# @Time    : 2018-11-16 10:30
# @Author  : Manu
# @Site    : 
# @File    : beautiful_soup.py
# @Software: PyCharm
from bs4 import BeautifulSoup
html = """
<html>
<head>
<title>村雨</title>
</head>
<body>
<p class="title" name="blog"><b>村雨的博客</b></p>
<li><!--注释--></li>
<a href="https://blog.csdn.net/github_39655029/article/details/83933199" target="_blank">
        <span class="article-type type-1">
            原        </span>
        Python爬虫之网络请求      </a>
<a href="https://blog.csdn.net/github_39655029/article/details/84100458" target="_blank">
        <span class="article-type type-1">
            原        </span>
        爬虫实践--豆瓣电影当前上映电影信息爬取      </a>
</body>
</html>
"""
soup = BeautifulSoup(html, 'lxml')
print(soup.name)
print(soup.title.name)
print(soup.prettify())
# 获取title
print('title:', soup.title.text)
# 获取head
print('p:', soup.p.text)
a_list = soup.a.attrs
print(a_list.get('href'))
# 获取Title标签的文字内容
print(soup.title.string)
# 获取对象名称
print(soup.name)
# 获取对象属性
print(soup.attrs)
# 获取对象类型
print(type(soup.name))
if type(soup.li.string) == element.Comment:
    print('comment:', soup.li.string)

image.png

目录
相关文章
|
存储 SQL 关系型数据库
MySQL中的update操作与锁机制
本文探讨MySQL中`UPDATE`操作的自动加锁机制及其对数据一致性的保障作用。尤其在InnoDB存储引擎下,系统会在涉及索引的更新操作中加行锁或间隙锁,防止多事务并发修改同一条记录。通过福利码兑换系统的实例展示,当线程A开启事务更新库存时,线程B试图更新相同记录会被阻塞,直至线程A提交。此外,文章还介绍了乐观锁及版本号控制等策略进一步提升并发性能的方法。作者:小明爱吃火锅,来源:稀土掘金。
644 2
|
存储 供应链 安全
智能时代的隐私保护:区块链技术在数据安全中的应用
【8月更文挑战第5天】 随着数字化浪潮的不断推进,个人隐私和数据安全问题愈发凸显。本文深入探讨了区块链技术如何为智能时代下的数据安全提供解决方案,通过具体案例分析了其在加强数据透明度、确保信息不可篡改性以及提升用户控制权方面的潜力与挑战。文章还讨论了区块链技术在实现隐私保护方面所面临的技术限制和法律问题,并展望了其在未来数据治理中的可能角色。
450 0
|
安全 Linux 数据库
在Linux中,如何使用OpenVAS和Nessus进行漏洞扫描和管理?
在Linux中,如何使用OpenVAS和Nessus进行漏洞扫描和管理?
|
存储 API 索引
LabVIEW利用 IMAQdx 驱动通过编程的方式导入或导出相机的配置文件
LabVIEW利用 IMAQdx 驱动通过编程的方式导入或导出相机的配置文件
234 0
|
安全 Java 图形学
Unity3D 导出的apk进行混淆加固、保护与优化原理(防止反编译)
对于辛辛苦苦完成的apk程序被人轻易的反编译了,那就得不偿失了,这篇文章就是解决Unity打包出来的包进行代码加固和混淆。
|
SQL 关系型数据库 MySQL
MySQL锁应用详解(上)
MySQL锁应用详解
354 0
|
人工智能 编解码
AI制作艺术二维码 - 文生图
AI制作艺术二维码 - 文生图
459 0
|
存储 Dragonfly 缓存
世界上最快的内存数据库横空出世,比 Redis 快 25 倍,Star 数飙升,杀疯了! 上
世界上最快的内存数据库横空出世,比 Redis 快 25 倍,Star 数飙升,杀疯了! 上
|
SQL Java 关系型数据库
Jdk8 之 Stream流详细用法(一)
Jdk8 之 Stream流详细用法(一)
300 0
Jdk8 之 Stream流详细用法(一)
|
SQL 存储 算法
三高Mysql - 搭建“三高”架构之扩展与切换(上)
三高Mysql - 搭建“三高”架构之扩展与切换(上)
293 0

热门文章

最新文章