如何使用css,把div设置为一个椭圆容器,在做html页面开发时,我们一般都是使用div来做容器的,如果你需要一个椭圆形的容器,我们可以使用div来实现的,下面来看一下。......
BeautifulSoup解析HTML
有时候我们会从网络上"爬"下一些网页,但别人的代码看着就头痛。虽然也许你精通正则表达式,一切都不是问题。但你还总得去写那些规则不是。
今天要介绍的【Beautiful Soup】 是一个Python库,它可以从HTML或XML文件中提取出你想要数据 ,这也许能帮你节省数小时甚至数天的工作时间。
接下来我们一起来看它是怎么工作的。
方法/步骤
从网上获取数据:
直接上代码,由于这里不讲爬虫相关的知识,所以就不细讲了。说明以下几点:
1.url指向的为你想爬取的网页地址;
2.translation_html为网页地址所对应的html代码,所对应的页面对下图;
3. 要介绍的BeautifulSoup就是对第2点中translation_html的内容进行解析。
---------------代码分割线---------------
import urllib.request as rq
url = "https://www.baidu.com"
req = rq.Request(url, headers={ 'Connection': 'Keep-Alive', 'Accept': 'text/html, application/xhtml xml, */*', 'Accept-Language': 'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko' })
translation_html = rq.urlopen(req).read().decode("utf-8")
安装并导入BeautifulSoup:
可以通过pip命令直接安装:
pip install beautifulsoup4
如果还想解析html以外格式的一些文档,可以再安装其它的库,如:
$ pip install lxml
$ pip install html5lib
安装好后,要在python(.py)文件中使用BeautifulSoup的各项功能前,还需要在.py文件中用以下语句把BeautifulSoup库进行导入。
from bs4 importBeautifulSoup
我们已经从第一步获取了要解析的HTML代码,从第二步安装并导入了BeautifulSoup库,接下来就可以使用BeautifulSoup库所提供的功能,对HTML的内容进行解析了。为了方便说明,这里不讲原理性的东西,都是以举例的方式让大家看得明白。
先看一段代码:
from bs4 importBeautifulSoup # 导入BeautifulSoup库
soup = BeautifulSoup(translation_html, "html.parser") #translation_html为第一步得到的html代码,"html.parser"说明我们解析的内容为html格式的。
为了使说明更简洁,translation_html所对应的HTML代码看成以下内容:
html>
body>
div id='div1'>
p class='p1 first'>p1 content!-- p1 comment -->/
p class='p2 second'>p2 content/
/div>
/body>
/html>
接下来的说明就围绕这段代码来说明BeautifulSoup的解析过程。
soup = 返回BeautifulSoup对象:整个html代码(从html>到/html>)
soup("div") = 查找所有div元素,返回列表:第1个元素为(从div id='div1'>到/div>)的代码
soup.div =查找第一个div元素,返回BeautifulSoup对象:(从div id='div1'>到/div>)
soup("p") = 查找所有p元素,返回列表:第1个元素为"p class='p1'>p1 content/",第二个元素为"p class='p2'>p2 content/"。
soup.div("p", recursive=False)= 查找div下直属p元素,返回列表:第1个元素为"p class='p1'>p1 content/",第二个元素为"p class='p2'>p2 content/"。
soup.p =查找第一个p元素,返回BeautifulSoup对象(p class='p1'>p1 content/)
注意:上述返回列表中的每个元素也是BeautifulSoup对象。可以把返回的BeautifulSoup对象看成是一个原HTML上的子HTML。在这个子对象上的操作方法和最初的对象是一样的。
soup("p", attrs={"class": "p2"}) = 在soup("p")的基础上加了一个限定条件,可以把查找的范围更精确化。返回值也是一个列表。相当于soup.findAll(...)。属性值还可以接受正则表达式:如上述的"p2"可以被替换为s【s = re.compile(r'fir')】
soup.find("p", attrs={"class": "p2"})= 返回上面列表中的第一元素。
attrs参数的内容可以有多个,如id,class,name什么都可以加进入,以最大限度的精确查找。
soup.p['class'] = 返回第一个p元素的class属性列表(['p1', 'first'])
soup.p.text= 返回第一个p元素的内容(p1 content),注意不包含注释的内容
以上就是BeautifulSoup库的基本用法,相信通过大家的举一反三,应该能够完成你想要的功能了。
以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!
标签: HTML
相关文章
- 详细阅读
- 详细阅读
-
HTML5创作工具,MAKA 2.0史上最全操作指南详细阅读
HTML5创作工具,MAKA 2.0史上最全操作指南,超过15000种模板组合。还怕你没有发挥的空间吗?MAKA(中文:码卡)作为中国最早推出移动端卡片式交互模式的创新者,随着HTML5技术的日渐成熟......
2023-03-16 438 HTML