BeautifulSoup库

比正则表达式慢 解析xml文档

每个标签可基本划分成以下三块

标签(tag)的名字:a,p,div

attr:属性(href,name)

正文 :<a href=url>百度一下</a>中的"百度一下"就是正文

 安装BeautifulSoup库

pip install beautifulsoup4

导入

import bs4
#from bs4 import BeautifulSoup
用BeautifulSoup库分析html
1) 将html文档装入一个BeautifulSoup对象X
2) 用X对象的find,find_all等函数去找想要的tag对象
3) 对找到的tag对象,还可以用其find,find_all函数去找它内部包含(嵌套)的tag对象
4) tag对象的text就是该对象里的正文(text),tag对象也可以看作是一个字典,里面包含各种属性(attr)及其值。

1. X.find(name, attrs, recursive, text )

name查找标签
text查找文本
attrs基于attrs参数

只返回第一个匹配到的对象 

2.X.find_all(name, attrs, recursive, text, limit, **kwargs)

返回所有匹配到的结果,区别于find(find只返回查找到的第一个结果),可通过for循环遍历每个搜索到的结果。

将html文档装入BeautifulSoup对象

方法1:html文档来自字符串

soup = bs4.BeautifulSoup(str,"html.parser")
print(soup.find("li").text)

方法2:html文档来自于文件

soup = bs4.BeautifulSoup(open("c:\\tmp\\test.html","r",encoding="utf-8"),"html.parser")

方法3:html文档来自于给定网址

import requests
def getHtml(url):
#获得html文本
    try:
        r = requests.get(url)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ""
html = getHtml("https://cn.bing.com/dict/search?q=new")
soup = bs4.BeautifulSoup(html,'html.parser')

用BeautifulSoup对象寻找想要的tag

import bs4
soup = bs4.BeautifulSoup(open("c:\\tmp\\test.html",encoding = "utf-8"),"html.parser")
diva = soup.find("div",attrs={"id":"synoid"})
#寻找名为"div",且具有 值为"synoid"的属性"id"的tag
if diva != None: #如果找到
    #通过 find_all() 方法的 attrs 参数定义一个字典参数来搜索包含特殊属性的tag:
    for x in diva.find_all("span",attrs={"class":"p1-4"}):
        print(x.text) #在diva内部继续找
    for x in diva.find_all("a",attrs={"id":"searchlink1"}):
        print(x.text)
    x = diva.find("a",attrs={"id":"searchlink1","class":"sh2"})
    if x != None:
        print(x.text)
        print(x["href"])
        print(x["id"])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值