python第三方库BeautifulSoup

Beautiful Soup是的一个库,最主要的功能是从网页抓取数据。有了它我们可以很方便地提取出HTML或XML标签中的内容

windows环境下安装

我本地安装的是python2.7,安装时自动安装了pip,在命令行直接输入
pip install beautifulsoup4 即可,推荐安装beautifulsoup4版本,安装好后可以在python环境下输入 from bs4 import BeautifulSoup 测试是否安装成功,没有报错即成功。

创建beautifulsoup对象

  • BeautifulSoup 第一个参数应该是要被解析的文档字符串或是文件句柄,第二个参数用来标识怎样解析文档.soup = BeautifulSoup(html,'lxml') 或者 soup = BeautifulSoup(open('1.html'))
    如果第二个参数为空,那么Beautiful Soup根据当前系统安装的库自动选择解析器,解析器的优先顺序: lxml, html5lib, Python标准库.如果指定的解析器没有安装,Beautiful Soup会自动选择其它方案
  • Beautiful Soup用了编码自动检测子库来识别当前文档编码并转换成Unicode编码. BeautifulSoup 对象的
    .original_encoding 属性记录了自动识别编码的结果:soup.original_encoding
  • 通过Beautiful Soup输出文档时,不管输入文档是什么编码方式,输出编码均为UTF-8编码
各解析模式解析结果

BeautifulSoup("<a></p>", "html.parser")
# <a></a>

BeautifulSoup("<a></p>", "html5lib")
# <html><head></head><body><a><p></p></a></body></html>

BeautifulSoup("<a></p>", "lxml")
# <html><body><a></a></body></html>


BeautifulSoup("<a><b /></a>", "xml")
# <?xml version="1.0" encoding="utf-8"?>
# <a><b/></a>

Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:

  • Tag
  • NavigableString
  • BeautifulSoup
  • Comment
Tag:标签,有name和attr属性

只返回首个找到的元素内容
soup.a  
soup.p.attrs 
soup.p.name
soup.p.get('class')
soup.p['class']
soup.p.string

返回所有匹配的节点内容

soup.p.contents
soup.head.children
soup.descendants
soup.strings
soup.stripped_strings

查找 返回列表类型

soup.find_all(href=re.compile("elsi"),id='link1')
soup.find_all("a",class_="sister",limit = 2, recursive = False)
soup.find_all(attrs={"data-foo":"value"})
soup.find_all(text=re.compile('dormouse'))

css方式查找

soup.select('title') # 按标签名查找
soup.select('p #link1') #p标签里id=link1的对象
soup.select('p a[href=""]') #同一节点中间没有空格如a[href=''] 属性用[]括起来
soup.select('.transaction li')# 不在同一节点中间用空格
soup.select('.content li')

参考链接 http://python.jobbole.com/81349/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值