python - BeautifulSoup 简单使用

# -*- coding: UTF-8 -*-

import urllib2, re, urllib, socket
from bs4 import BeautifulSoup

def SoupHtml(html):
    soup = BeautifulSoup(html, "html.parser")

html = '''
<li>
    <h5>
        <a href="/html/132663.htm" title="2019七夕早安图片大全 七夕情人节鲜花花束图片" target="_blank">2019七夕早安图片大全 七夕情人节鲜花花束图片</a>
    </h5>
    <div class="cover">
        <a href="/html/132663.htm" title="2019七夕早安图片大全 七夕情人节鲜花花束图片" target="_blank">
            <img src='//pic.feizl.com/upload/allimg/190808/gxtxfcgtvdxvmpo.jpg' border='0' width='160' height='110'>
        </a>
    </div>
    <a id="love" class="like" href="javascript:" onClick="javascript:postDigg('good',132663)">
    </a>
    <div class="date" id="test">发布时间:2019-08-08</div>
</li>
'''
SoupHtml(html)

find 查询一个标签

  • 根据class找出标签内的内容

print soup.find(class_="cover") # class 是关键字  所有使用class_
或者
print soup.find(attrs={'class': 'cover'})
  • 根据id找出标签内的内容

print soup.find(id="test")
或者
print soup.find(attrs={'id': 'test'})
  • 获取标签的属性

print soup.find(class_="like").get("id")
print soup.find('a', id="love").get("href")
  • 获取标签里面的内容

print soup.find('div', id="test").get_text()
  • 获取标签所有的属性

print soup.find('a', id="love").attrs
  • 获取标签的子节点

print soup.find(class_="cover").children # listiterator object at 0x10da27890> 需通过遍历得到
for i in soup.find(class_="cover").children:  
    print(i) # 标签
  • 判断标签是否存在title属性

print soup.find(id="love").has_attr("title")

find_all 查询多个标签

  • 获取所有class 包含 da 的标签:正则

print soup.find_all('div', class_=re.compile("da"))
  • 获取所有div 标签

print soup.find_all('div')
  • 获取id="test"的所有的div 标签

print soup.find_all('div', id="test")
  • 获取多个标签

print soup.find_all(['a', 'div'])
  • 获取属性id=love的所有标签

print soup.find_all(id="love")
  • 获取属性id=love id=test的所有标签

print soup.find_all(id=["love", "test"])

select 查询多个标签

  • 得到所有的a标签

print soup.select('a')
  • 得到class=like的所有标签

print soup.select('.like')
  • 得到id=test的所有标签

print soup.select('#test')
  • 得到a标签中id=test的所有标签

print soup.select('a #test')

推荐阅读更多精彩内容