beautifulsoup 简介
来源:互联网 发布:linux系统排行榜 2017 编辑:程序博客网 时间:2024/05/21 14:09
beautifulsoup 有下列3个对象
- BeautifulSoup
- Tag
- NavigableString
Beautifulsoup对象的创建
创建一个BeautifulSoup对象是任何Beatutiful Soup工程的第一步。
BeatutifulSoup对象的创建可以通过一个字符串或一个类文件对象(可以是一个储存在本地的文件句柄或一个web网页句柄)
1.用字符串创建BeautifulSoup对象
向构造器中传递一个字符串创建对象,如:
helloworld = "<p>Hello World</p>" soup_string = BeautifulSoup(helloworld)
上述创建对象被当做HTML文档处理,可以使用print(soup_string)打印,输出为:
hello world
(PS:输出结果与系统有关,有可能为Helloworld
)在创建对象过程中,输入被所支持的语法解析器转换为一个树结构体。所以,输入会被当做不同的BeautifulSoup对象(如BeautifulSoup,Tag,NavigableString).### 2.用类文件对象创建BeautifulSoup对象类文件对象在解析在线网页时非常有用,是BeautifulSoup中最常见的对象。比如我们要得到一个图书销售网站所有图书列表,此网页为http://www.packtpub.com/books。为了减少过于的访问比如使用字符串来获得网页内容,我们可以使用关于URL的类文件对象来创建BeautifulSoup对象。如:import urllib2 from bs4 import BeautifulSoup url = "http://www.packtpub.com/books" page = urllib2.urlopen(url) soup_packtpage = BeautifulSoup(page)
urllib2.urlopen()方法由输入的URL返回一个类文件对象,然后以此创建BeautifulSoup对象。
相似的,我们可以为本地文件创建一个文件对象用于构造BeautifulSoup。比如在本地文件Soup中有个foo.html文件,创建BeautifulSoup对象方式如下:
with open("foo.html","r") as foo_file: soup_foo = BeautifulSoup(foo_file)
BeautifulSoup会有警告如果我们创建对象时传递的是文件名而不是文件对象时,比如:
soup_foo = BeautifulSoup(“foo.html”)
警告如下:
UserWarning: “foo.html” looks like a filename, not markup. You
should probably open this file and pass the filehandle into
Beautiful Soup.
但是Beautiful仍然会将”foo.html”当做字符串处理。
同样的如果我们传递一个URL代替URL文件对象的话,也会被当做字符串处理。
3.用XML解析器创建BeautifulSoup对象
当创建一个BeautifulSoup对象时,TreeBuliders类被用于创建HTML/XML树,默认的是使用HTML TreeBuliders对象,使用HTML解析器。如果我们想把输入当做XML做解析,我们必须明确的使用features参数在BeatufulSoup对象构造器中进行说明。指定features参数,我们能够选择最合适的TreeBuliders来满足我们的需求。
soup_xml = BeautifulSoup(helloworld,"xml")
建议创建BeautifulSoup对象的时候就指定解析器。因为不同的解析器解析的内容不同。在我们给出一个无效的HTML文档内容时更是如此。
Tag对象
Tag对象代表了HTML和XML文档中不同的标签。当解析这些文档时Tag对象被创建。此对象拥有HTML/XML文档标签的属性和内容,此对象可以用户搜索和定位HTML/XML文档内容。
从Beautifulsoup中获得Tag对象
我们可以与任何标签打交道。比如我们获得一下例子中的第一个标签通过简单的调用标签。
html_atag = """<html><body><p>Test html a tag example</p> <a href="http://www.packtpub.com'>Home</a> <a href="http;//www.packtpub.com/books'>Books</a> </body> </html>""" soup = BeautifulSoup(html_atag,'lxml') atag = soup.a print(atag)
tag对象的名字
Tag对象的名字通过.name访问
tagname = atag.name print tagname
Tag对象的属性
属性给予标签意义和内容。比如标签有类别,ID号和风格。tag的属性可以把Tag对象当作字典来获取。
atag = soup_atag.a print (atag['href'] )
output
http://www.packtpub.com
标签的不同属性都可以通过.attrs来访问。
print(atag.attrs) 将会得到 {‘href’:’ http://www.packtpub.com‘}
NavigableString对象
NavigableString对象包含HTML或XML标签中的文字内容。这是一个Python Unicode字符串,用来寻找或导航定位。有时我们会基于当前文本内容定位其他标签或其他文本内容。
获得一个标签储存的文本内容可以通过使用.string访问
first_a_string = soup_atag.string
上诉就创建了一个NavigableString对象,里面是第一个标签中的字符串u’Home’。
- beautifulsoup 简介
- BeautifulSoup简介
- 【Python】BeautifulSoup简介02
- 用Python解析HTML,BeautifulSoup使用简介
- python爬虫(一)BeautifulSoup简介
- BeautifulSoup
- BeautifulSoup
- BeautifulSoup
- beautifulsoup
- BeautifulSoup
- BeautifulSoup
- BeautifulSoup
- BeautifulSoup
- BeautifulSoup
- beautifulsoup
- BeautifulSoup
- BeautifulSoup
- BeautifulSoup
- 一些关于编程好的建议和意见
- Android工程师成长路线全攻略
- MFC AfxMessageBox默认标题修改
- Angularjs + Bootstrap 制作的一个TODO List
- EventBus 3.0 用法(简单篇)
- beautifulsoup 简介
- java并发编程基础(1)—线程之基本概念
- Android开发-SQLiteDemo增删改查-AndroidStudio
- OpenGL图形管线和坐标变换
- shlter animal
- Get Excel data type in SSIS
- 最简单的ListView演练
- hdu 1698
- HDU/HDOJ 1159/POJ 1458 Common Subsequence(最长公共子序列LCS,滚动数组)