我是靠谱客的博主 会撒娇故事,最近开发中收集的这篇文章主要介绍通过python解析html最好用的模块是_如何使用Python漂亮的soup模块解析HTML页面,说,利用,BeautifulSoup...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

BeautifulSoup 是 Python 的一个模块,用于从 HTML 页面中提取信息。

首先在命令行中运行

pip install beautifulsoup4

安装该模块,模块的名称是 bs4。

1 创建 BeautifulSoup 对象

调用 bs4. BeautifulSoup () 函数时,需要传入需要解析的 HTML 字符串。 bs4. BeautifulSoup () 函数会返回一个 BeautifulSoup 对象。

import requests,bs4

import logging

# logging.disable(logging.CRITICAL)

logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')

'''

解析 HTML

@author Deniro Li

'''

# 创建 BeautifulSoup 对象

res=requests.get('http://baijiahao.baidu.com/s?id=1661690064978679036')

res.raise_for_status()

soup=bs4.BeautifulSoup(res.text)

logging.debug(str(type(soup)))

运行结果:

这段代码利用 requests.get()函数从百度网站下载页面,然后将响应结果的 text 属性传递给 bs4.BeautifulSoup()。它返回的 BeautifulSoup 对象保存在变量 soup 中。

也可以向 bs4.BeautifulSoup() 传递一个 File 对象,从硬盘加载一个 HTML 文件。

有了BeautifulSoup 对象之后,我们就可以利用它的方法,定位出 HTML 文档中的特定部分。

2 搜索 HTML 元素

传入一个字符串作为 CSS选择器,调用 BeautifulSoup 的 select() 方法,就可以取到 Web 页面元素。选择器就像正则表达式:通过它们来指定需要寻找的模式。

CSS选择器示例

示例

说明

soup.select(‘div’)

所有名为

的元素

soup.select(’#title’)

带有 id 属性为 title 的元素

soup.select(’.message’)

所有使用 CSS class 属性名为 message 的元素

soup.select(‘div span’)

所有在

元素之内的

元素

soup.select(’

div > span

’)

所有在

元素之内的直接

元素, 即没有其它中间元素

soup.select(‘input[name]’)

所有名为

,并有一个 name 属性,其值无所谓的元素

soup.select(‘input[type=“button”]’)

所有名为

,并有一个 type 属性,其值为 button 的元素

不同的选择器模式可以组合起来,形成复杂的匹配。例如, soup.select(‘p #author’) 将匹配所有在一个

元素之内并且 id 属性为 title 的元素。

select() 方法将返回一个 Tag 对象的列表, Tag 对象用于表示一个 HTML 元素。针对 BeautifulSoup 对象中的 HTML 的每次匹配,都会生成一个 Tag 对象,并放入列表中。 把 Tag 对象传递给 str() 函数,就可以得到它所代表的整个 HTML 标签字符串。 Tag 对象还包含 attrs 属性,它以字典的形式存放该 Tag 对象标签所拥有的所有 HTML 属性。

elems = soup.select('.bjh-p')

logging.debug('elems type -> ' + str(type(elems)))

logging.debug('len -> ' + str(len(elems)))

logging.debug('elem type -> ' + str(type(elems[0])))

logging.debug('elem -> ' + str(elems[0]))

logging.debug('elem text -> ' + str(elems[0].getText()))

logging.debug('elem attrs -> ' + str(elems[0].attrs))

运行结果:

通过 len(elems) 得知,这个 HTML 总共包含 47 个 Tag 对象。str(elems[0]) 可以得到包含开始和结束标签的整个标签字符串。

指定 elems 的 Tag 对象列表序号,就可以取到相应的 Tag 对象。比如我们想取第二个 Tag 对象,就可以这样写:

logging.debug('elem2 -> ' + str(elems[1]))

logging.debug('elem2 text -> ' + str(elems[1].getText()))

logging.debug('elem2 attrs -> ' + str(elems[1].attrs))

运行结果:

3 获取 HTML 元素属性值

利用 Tag 对象的 get() 方法可以很容易从元素中获取属性值。我们向该方法传入一个属性名称,它就会返回该属性的值。

elems = soup.select('li')

logging.debug('len -> ' + str(len(elems)))

elem = elems[0]

logging.debug('elem -> ' + str(elem))

attr=elem.get('data-rid')

logging.debug('attr -> ' + str(attr))

运行结果:

最后

以上就是会撒娇故事为你收集整理的通过python解析html最好用的模块是_如何使用Python漂亮的soup模块解析HTML页面,说,利用,BeautifulSoup...的全部内容,希望文章能够帮你解决通过python解析html最好用的模块是_如何使用Python漂亮的soup模块解析HTML页面,说,利用,BeautifulSoup...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部