Python Beautiful Soup学习之HTML标签补全功能

时间:2023-01-20 19:00:43

Beautiful Soup是一个非常流行的Python模块。该模块可以解析网页,并提供定位内容的便捷接口。

使用下面两个命令安装:

pip install beautifulsoup4 或者 sudo apt-get install Python-bs4

如果想安装最新的版本,请直接下载安装包来手动安装,也是十分方便的方法。

在这里我安装的是 Beautiful Soup 4.5.1

Python Beautiful Soup学习之HTML标签补全功能

下载完成之后把解压包放到site-package目录下,cd到解压包中,运行下面的命令即可完成安装:

sudo python setup.py install

然后需要安装lxml:

sudo apt-get install Python-lxml

使用Beautiful Soup的第一步是将已下载的HTML内容解析为soup文档

由于大多数网页都不具备良好的HTML格式,因此Beautiful Soup需要对其实际格式进行确定。

例如,在下面这个简单网页的列表中,存在属性值两侧引号缺失和标签未闭合的问题。

markup ="<b><!--Hey, buddy. Want to buy a used parser?--></b><p>fdsf"

我们可以看到P标签未闭合。下面让我们看一下Beautiful Soup是如何处理的。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

 from bs4 import BeautifulSoup

markup ="<b><!--This will be used in the crawler--></b><p>It's wonderful"
tags = []
#soup = BeautifulSoup(markup,'html.parser')

#环境问题,可能报错,暂时还没搞懂html.parser和lxml的区别,后续跟进,如果报错,就用下一行的代码
soup = BeautifulSoup(markup,'lxml')
fixed_html = soup.prettify()
print fixed_html

结果如下:

Python Beautiful Soup学习之HTML标签补全功能

我们可以看到不仅<p>标签补全完整,而且加入了<html>和<body>标签,进行格式化的输出。

下面我们就可以用findAll()方法查找我们想要的标签或者内容了。

我们先打印看一下findAll()得到的标签都是什么?

tags = []

tag = soup.findAll()
for sub in tag:
tags.append(sub.name)
print tags

执行结果如下:

Python Beautiful Soup学习之HTML标签补全功能

我们得到了我们所需要的标签,然后我们在findAll()中加入想查找的标签。

例如:

sub = soup.findAll('p')

得到结果:

Python Beautiful Soup学习之HTML标签补全功能

后续将会把该内容应用到爬虫中,对爬虫得到的网页进行解析。

 

Python Beautiful Soup学习之HTML标签补全功能的更多相关文章

  1. 推荐一些python Beautiful Soup学习网址

    前言:这几天忙着写分析报告,实在没精力去研究django,虽然抽时间去看了几遍中文文档,还是等实际实践后写几篇操作文章吧! 正文:以下是本人前段时间学习bs4库找的一些网址,在学习的可以参考下,有点多 ...

  2. python学习笔记--导入tab键自动补全功能的配置

    今天开始学习Python,必须配置tab键补全功能 1.首先我们需要查看python的安装路径 [root@abc ~]# python Python 2.6.6 (r266:84292, Jan 2 ...

  3. 第三百六十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch&lpar;搜索引擎&rpar;用Django实现搜索的自动补全功能

    第三百六十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—用Django实现搜索的自动补全功能 elasticsearch(搜索引擎)提供了自动补全接口 官方说明:https://www.e ...

  4. Python中tab键自动补全功能的配置

    新手学习Python的时候,如何没有tab键补全功能,我感觉那将是一个噩梦,对于我们这种菜鸟来说,刚接触python,对一切都不了解,还好有前辈们的指导,学习一下,并记录下来,还没有学习这个功能小伙伴 ...

  5. 四十七 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch&lpar;搜索引擎&rpar;用Django实现搜索的自动补全功能

    elasticsearch(搜索引擎)提供了自动补全接口 官方说明:https://www.elastic.co/guide/en/elasticsearch/reference/current/se ...

  6. php实现网页HTML标签补全方法

    如果你的网页内容的html标签显示不全,有些表格标签不完整而导致页面混乱,或者把你的内容之外的局部html页面给包含进去了,我们可以写个函数方法来补全html标签以及过滤掉无用的html标签. php ...

  7. 网页内容的html标签补全和过滤的两种方法

    网页内容的html标签补全和过滤的两种方法: 假设你的网页内容的html标签显示不全,有些表格标签不完整而导致页面混乱,或者把你的内容之外的局部html页面给包括进去了,我们能够写个函数方法来补全ht ...

  8. python添加tab键自动补全功能

    默认python是没有tab键补全功能的: >>> import tab Traceback (most recent call last): File "<stdi ...

  9. vim基础学习之自动补全功能

    本章我们学习自动补全功能1.自动补全优先从当前的编辑区获得补全列表例如:我们写下如下内容 aaaaa aabbb aaab 当我们再次输入aa,然后我们按下Tab的时候,会弹出一个包含 aaaaa a ...

随机推荐

  1. Centos 7 ASP&period;NET Core 1&period;0 Docker部署

    先决条件 64位,内核3.10以上,查看当前的内核版本,打开一个终端使用uname -r显示您的内核版本             安装 sudo yum update     sudo tee /et ...

  2. React Native 组件之Image

    Image组件类似于iOS中UIImage控件,该组件可以通过多种方式加载图片资源. 使用方式,加载方式有如下几种: /** * Sample React Native App * https://g ...

  3. Linux 忘记登录密码?破解系统登陆密码

    1.重启或者开启系统,在如下界面按e 进入救援系统: 2.在linux16 这一行末尾输入:rd.break,以rd.break 的方法重置密码 3.分别执行以下命令 mount -o remount ...

  4. 新唐N32905U1DN开发教程:MDK环境下工程搭建&lpar;官方提供的固件库&rpar;(转)

    前言:新唐N32905U1DN单片机不支持用户将程序烧录到内部FLASH,必须外挂FLASH存储用户程序,可以是SPI FLASH.NAND FLASH.SD卡.用户采用裸机开发的方式可使用官方提供的 ...

  5. Windows server 2008 R2实现多用户远程连接 &lpar;转&rpar;

    经常使用远程桌面的朋友可能会注意到,Windows server 2008 R2中,远程桌面最多只允许两个人远程连接,第三个人就无法连接过去,但是生产环境中有一些服务器可能有许多人需要连接上去,而微软 ...

  6. jquery&period;form&period;js实现将form提交转为ajax方式提交的方法

    本文实例讲述了jquery.form.js实现将form提交转为ajax方式提交的方法.分享给大家供大家参考.具体分析如下: 这个框架集合form提交.验证.上传的功能. 这个框架必须和jquery完 ...

  7. jquery plugin 之 form表单验证插件

    基于h5表单验证系统.扩展了对easyui组件的支持 先上图: 提示样式用到了伪对象的 {content: attr(xxx)}函数方法,实现提示信息能动态切换. 1.关键属性说明: type: 表单 ...

  8. Linux系统中关于Sqlite3中文乱码问题及解决办法

    新做的一个项目在本地(Win8)测试时没有问题,但传到服务器(Linux)时从Sqlite3数据库查询到的数据中文却是乱码(数据库中是正常的) 将php文件.html文件都设置成统一的utf8还是一样 ...

  9. iOS 9&colon; UIStackView入门

    本文转自http://www.cocoachina.com/ios/20150623/12233.html 本文由CocoaChina译者candeladiao翻译,欢迎参加我们的翻译活动.原文:iO ...

  10. gdb 调试(设置变量)(六)

    一旦使用GDB挂上被调试程序,当程序运行起来后,你可以根据自己的调试思路来动态地在GDB中更改当前被调试程序的运行线路或是其变量的值,这个强大的功能能够让你更好的调试你的程序,比如,你可以在程序的一次 ...