Python页面解析和数据提取【bs4】

了解bs4

bs4(Beautiful Soup)是一个可以从HTML或XML文件中提取数据的Python库

它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式

Beautiful Soup会帮你节省数小时甚至数天的工作时间

BeautifulSoup

BeautifulSoup是bs4中非常重要的一个类
它利用html或xml文件快速生一个对象
我们可以借用该对象的方法和属性快速获取我们需要的数据
用法: BeatifulSoup(html, resolver)

解析器的选择,根据不同的需求选择响应的解析器


bs4中对象的种类

首先来看一段测试代码:
import bs4
import requests
# html测试代码
#只包含一个div标签
#div中包含一个p标签,一段文本 和 一段注释
html =‘<div class="属性"><p>p标签文本</p>div中文本<!--注释代码--></div>‘

# 利用html字符串实例化BeautifulSoup对象
soup = bs4.BeautifulSoup(html,‘html.parser‘)

# 利用.div的方式访问节点
print(type(soup.div),‘--->‘,soup.div) 

# 利用.class的方式访问属性
# 打印div节点中的元素和类型
for item in soup.div:
    print(type(item),‘--->‘,item)
显示结果:


Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构
每个节点都是Python对象
所有对象可以归纳为4种
Tag , NavigableString , BeautifulSoup , Comment .

>Tag对象
    html文档中每一个标签都会在BeautifulSoup中以Tag形式出现
    Tag中可以包含其他的Tag和其他部分对象
    Tag具有许多的属性,可以用于访问标签或其子标签的属性和文本等
    例如:
            Tag.name返回标签名
            Tag.string返回标签中的文本信息(Tag仅包含一个文本时,多个用strings)
    Tag中的属性通过赋值修改,会改动相应html文件中标签

>NavigableString对象
    Tag中的字符串用NavigableString对象来包装
    作为字符串不能被直接编辑,但可以用replace()替换
    在BeautifulSoup外调用需使用unicode()方法

>BeautifulSoup对象
    包含一个文档的全部内容
    大多数情况下可以看作是一个大的Tag对象,支持遍历和搜索文档树

>Comment 对象
    Comment对象是一个特殊的NavigableString对象
    用来包装文档中的注释和特殊字符串等

根据需求匹配节点或信息

find和findall方法
适用对象:Tag  BeautifulSoup

find会返回满足条件的第一个节点
findall方法会以列表形式返回满足匹配条件的所有节点

Tag.find(‘a‘,) # 返回Tag中第一个a标签节点
Tag.find(‘a‘,class_="hello") # 返回Tag中第一个class为"hello"的a标签
Tag.find_all(‘p‘,text=‘p标签文本‘)
# 返回Tag中包含(string属性为‘p标签文本‘的NavigableString节点)的p标签

获取文本信息

string,strings ,text 属性和 get_text()方法
以上方法都可以用于获取文本
适用对象:
    string 适用于bs4中的全体对象 (Tag  BeautifulSoup NavigableString Comment)
    strings ,text , get_text()     适用于    Tag  BeautifulSoup
区别:

    tag.strings返回一个生成器
    可以迭代获取tag节点及其子孙节点中所有的NavigableString节点
    返回的是每一个元素类型都是NavigebleString节点

    tag.string
    当tag的子节点只包含一个NavigebleString节点,返回该节点
    当tag只有一个子节点时,返回该子节点的string属性的返回值
    此外均返回None

    tag.get_text()返回一个字符串
    用于捕获该节点的所有子孙节点中的非注释文本(即NavigebleString节点的string返回值)

    tag.text
    在bs4源码中text是接收get_text()返回值的变量
    等同于tag.get_text()

原文地址:https://blog.51cto.com/13992211/2353207

时间: 2024-11-14 12:52:28

Python页面解析和数据提取【bs4】的相关文章

python页面解析_beautifulsoup试玩

最近玩爬虫,先把python解析器 beautifulsoup 练练 这个 tainiu.html 是从百度网盘里拷贝一段html from bs4 importBeautifulSoup with open('tainiu.html','r',encoding ='UTF-8')as f: html = f.read() # 这里的编码默认不行 一定要写上 否则报错  # 应该跟具体情况有关, python 教学视频里 就不写encoding 没错误 实际用 就出问题 soup =Beauti

Python操作Excel之数据提取

最近发现excel数据量极大,并且通过简单的数据操作不能提取到我需要的数据,如果单独操作,数据量太大耗时太长.想着通过简单的方式,并且快速提取数据,就想到了Python.python操作Excel使用的openyxl和pandas对Excel进行操作.代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2020-02-24 下午 03:43 # @Author : Zhanxing # @Site : # @File : 提

数据提取

页面解析和数据提取 一般来讲对我们而言,需要抓取的是某个网站或者某个应用的内容,提取有用的价值.内容一般分为两部分,非结构化的数据 和 结构化的数据. 非结构化数据:先有数据,再有结构, 结构化数据:先有结构.再有数据 不同类型的数据,我们需要采用不同的方式来处理. 非结构化的数据处理 文本.电话号码.邮箱地址 正则表达式 HTML 文件 正则表达式 XPath CSS选择器 结构化的数据处理 JSON 文件 JSON Path 转化成Python类型进行操作(json类) XML 文件 转化成

python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding:utf-8from com.wenhy.crawler_baidu_baike import url_manager, html_downloader, html_parser, html_outputer print "爬虫百度百科调度入口" # 创建爬虫类class SpiderMai

05 Python网络爬虫的数据解析方式

一.爬虫数据解析的流程 1.指定url 2.基于requests模块发起请求 3.获取响应中的数据 4.数据解析 5.进行持久化存储 二.解析方法 (1)正则解析 (2)bs4解析 (3)xpath解析 1. 正则解析 常用正则表达式 1 单字符: 2 . : 除换行以外所有字符 3 [] :[aoe] [a-w] 匹配集合中任意一个字符 4 \d :数字 [0-9] 5 \D : 非数字 6 \w :数字.字母.下划线.中文 7 \W : 非\w 8 \s :所有的空白字符包,括空格.制表符.

Python的Web编程[0] -&gt; Web客户端[1] -&gt; Web 页面解析

 Web页面解析 / Web page parsing 1 HTMLParser解析 下面介绍一种基本的Web页面HTML解析的方式,主要是利用Python自带的html.parser模块进行解析.其主要步骤为: 创建一个新的Parser类,继承HTMLParser类; 重载handler_starttag等方法,实现指定功能; 实例化新的Parser并将HTML文本feed给类实例. 完整代码 1 from html.parser import HTMLParser 2 3 # An HTML

【Python爬虫学习实践】基于Beautiful Soup的网站解析及数据可视化

在上一次的学习实践中,我们以Tencent职位信息网站为例,介绍了在爬虫中如何分析待解析的网站结构,同时也说明了利用Xpath和lxml解析网站的一般化流程.在本节的实践中,我们将以中国天气网为例,并基于Beautiful Soup库对其进行数据解析,最后再简单说明pyecharts数据可视化. 中国天气网网址:http://www.weather.com.cn/textFC/hb.shtml 和之前的Tencent职位信息实践一样,我们先来分析一下我们所爬取的网站的结构.在中国天气网中,我们可

JS解析Json 数据并跳转到一个新页面,取消A 标签跳转

JS解析Json 数据并跳转到一个新页面,代码如下 $.getJSON("http://api.cn.abb.com/common/api/staff/employee/" + obj.id, function (result) { window.open("https://abb-my.sharepoint.com/_layouts/15/me.aspx?p=" + result.Email, "_blank") }); 取消A 标签跳转 &l

使用Python解析JSON数据的基本方法

这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下: ----------------------------------------------------------------- Python的json模块提供了一种很简单的方式来编码和解码JSON数据. 其中两个主要的函数是 json.dumps() 和 json.loads() , 要比其他序列化函数库如pickle的接口少得多. 下面演示如何将一个Python数据结构