一、准备环境:

1、准备测试页面test.html

<html>
<head>
<title>
The Dormouse's story
</title>
</head>
<body>
<p class="title">
<b>
The Dormouse's story
</b>
</p>
<p class="story">
Once upon a time there were three little sisters; and their names were
<a class="sister" href="http://example.com/elsie" id="link1">
Elsie
</a>
,
<a class="sister" href="http://example.com/lacie" id="link2">
Lacie
</a>
and
<a class="sister" href="http://example.com/tillie" id="link2">
Tillie
</a>
; and they lived at the bottom of a well.
</p>
<p class="story">
...
</p>
</body>
</html>

test.html

2、安装相关模块

pip install bs4
pip install requests

二、beautifulsoup相关语法:

1、实例化beautifulsoup对象

from bs4 import BeautifulSoup
# 实例化BeautifulSoup对象
# 1、转化本地HTML文件
soup = BeautifulSoup(open('本地文件'), 'lxml')
# 如使用本地文件
with open('test.html',mode='r',encoding='utf-8') as f:
soup = BeautifulSoup(f,'lxml')
print(soup.a) # 打印第一个a标签的所有内容
# 2、通过requests.get或其它方式获取到的HTML数据
soup = BeautifulSoup('字符串类型或者字节类型', 'lxml')
# 如通过requests获取到的网页数据
from requests
page_html = requests.get(url='http://www.baidu.com').text
soup = BeautifulSoup(page_html, 'lxml')
print(soup.a) # 打印第一个a标签的所有内容

2、通过实例化对象获取标签,标签内容,标签属性(这里以上面准备的test.html为示例进行演示)。

import requests
from bs4 import BeautifulSoup with open('test.html',mode='r',encoding='utf-8') as f:
soup = BeautifulSoup(f,'lxml')
print(soup.title) # 打印title标签的全部内容
print(soup.a) # 打印a标签的全部内容
print(soup.a.attrs) # 打印a标签的所有属性内容
print(soup.a.attrs['href']) # 打印a标签href属性的值
print(soup.a['href']) # 也可以简写 # 打印a标签中的文本内容内容
print(soup.a.string)
print(soup.a.text)
print(soup.a.get_text())
# 需要注意的是,如果a标签中还嵌套有其它标签,soup.a.string将获取不到值返回一个None,
# 而soup.a.text和soup.a.get_text()可以获取到包括a标签在内的所有子标签中的文本内容。
# 注意:soup.tagName只定位到第一次出现的tagName标签便结束匹配 soup.find('a') # 与soup.tagName一样只匹配到第一次出现的。不同的是可以使用标签和属性进行联合查找。
print(soup.find('a',{'class':"sister",'id':'link2'})) # 根据标签和属性进行定位 find_all() # 和find的用法一样,只是返回值是一个列表,这里就不演示了 # 根据选择器进行定位
# 常见的选择器:标签选择器(a)、类选择器(.)、id选择器(#)、层级选择器
soup.select('a') # 根据标签定位到所有a标签
print(soup.select('.sister')) # 根据类名sister定位
print(soup.select('#link1')) # 根据id 进行定位
print(soup.select('p>a')) # 定位所有p标签下的a标签

数据解析模块BeautifulSoup简单使用的更多相关文章

  1. X2.5 添加自定义数据调用模块(简单方法)

    Discuz!X系列的diy功能还是相当不错的,在对其进行二次开发的过程中,或许需要加入新的数据调用模块,这样可以使你开发的功能模块也像原来的模块一样,只需要点点鼠标,填写一些简单的信息,就可以在各个 ...

  2. python爬虫数据解析之BeautifulSoup

    BeautifulSoup是一个可以从HTML或者XML文件中提取数据的python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式. BeautfulSoup是python爬虫三 ...

  3. iOS开发——数据解析Swift篇&简单json数据处理

    简单json数据处理 //loadWeather var url = NSURL(string: "http://www.weather.com.cn/adat/sk/101240701.h ...

  4. 070.Python聚焦爬虫数据解析

    一 聚焦爬虫数据解析 1.1 基本介绍 聚焦爬虫的编码流程 指定url 基于requests模块发起请求 获取响应对象中的数据 数据解析 进行持久化存储 如何实现数据解析 三种数据解析方式 正则表达式 ...

  5. 【爬虫入门手记03】爬虫解析利器beautifulSoup模块的基本应用

    [爬虫入门手记03]爬虫解析利器beautifulSoup模块的基本应用 1.引言 网络爬虫最终的目的就是过滤选取网络信息,因此最重要的就是解析器了,其性能的优劣直接决定这网络爬虫的速度和效率.Bea ...

  6. 【网络爬虫入门03】爬虫解析利器beautifulSoup模块的基本应用

    [网络爬虫入门03]爬虫解析利器beautifulSoup模块的基本应用   1.引言 网络爬虫最终的目的就是过滤选取网络信息,因此最重要的就是解析器了,其性能的优劣直接决定这网络爬虫的速度和效率.B ...

  7. 爬虫----爬虫解析库Beautifulsoup模块

    一:介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你 ...

  8. Request模块—数据解析工具

    一.爬虫基本步骤 指定URL信息 发起请求 获取响应数据 对响应数据进行数据解析 持久化存储 二.数据解析 1. 正则表达式 (1) 基本语法 1. 单字符: . : 除换行以外所有字符 [] :[a ...

  9. 最简单简洁高效的Json数据解析

    一.无图无真相 二.主要代码 1.导入jar包 拷贝fastjson.jar包到projectlibs包下 2.封装工具类JsonUtil.java package com.example.parse ...

随机推荐

  1. SpringBoot(三) 配置文件 篇章

    SpringBoot 配置文件默认为application.properties,但是本章节主要讲解yaml文件配置,因为现在的趋势是使用yaml,它是类似于标准通用标记语言的子集XML的数据描述语言 ...

  2. 并发—JVM内部机制和外部机制处理方法

    并发常见的编程场景,一句话概括就是,需要协调多个线程之间的协作,已保证程序按照自己原本的意愿执行.那么究竟应该如何协调多个线程? 这个问题比较宽泛,一般情况下,我们按照方式的纬度去简单区分,有以下两种 ...

  3. HTML5新标签与特性---新表单+新属性----综合案例1

    HTML5新标签与特性 兼容性问题 (ie9 以上的版本) 文档类型设定 document HTML: sublime 输入 html:4s XHTML: sublime 输入 html:xt HTM ...

  4. MBProgressHUD源码(上)

    本篇博文记录MBProgressHUD源码学习过程,从官方提供的Demo项目入手,一步步了解其代码结构,学习它使用的技术,体会作者的编程思想. 一.结构 我们先来看下MBProgressHUD的结构, ...

  5. [b0039] python 归纳 (二四)_多进程数据共享和同步_锁Lock&RLock

    # -*- coding: utf-8 -*- """ 多进程 锁使用 逻辑: 10个进程各种睡眠2秒,然后打印. 不加锁同时打印出来,总共2秒,加锁一个接一个打印,总共 ...

  6. 网络爬虫之使用pyppeteer替代selenium完美绕过webdriver检测

    1引言 曾经使用模拟浏览器操作(selenium + webdriver)来写爬虫,但是稍微有点反爬的网站都会对selenium和webdriver进行识别,网站只需要在前端js添加一下判断脚本,很容 ...

  7. Troubleshooting ORA-01555 - Snapshot Too Old: Rollback Segment Number "String" With Name "String" Too Small (Doc ID 1580790.1)

    Troubleshooting ORA-01555 - Snapshot Too Old: Rollback Segment Number "String" With Name & ...

  8. logistic 回归(线性和非线性)

    一:线性logistic 回归 代码如下: import numpy as np import pandas as pd import matplotlib.pyplot as plt import ...

  9. 详解C++ STL priority_queue 容器

    详解C++ STL priority_queue 容器 本篇随笔简单介绍一下\(C++STL\)中\(priority_queue\)容器的使用方法和常见的使用技巧. priority_queue容器 ...

  10. 编译安装nmap

    官方编译文档 参考 安装对应的库,并编译安装.