码迷,mamicode.com
首页 > 其他好文 > 详细

beautifhulsoup4的使用

时间:2019-06-01 21:09:42      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:link   mode   名称   doc   attrs   标签   自动补全   正则匹配   block   

Beautiful: - 基本使用 from bs4 import BeautifulSoup

    - 解析器:
      lxml, html.parser
?
  soup = BeautifulSoup(解析的文档, ‘解析器‘)
?
  - 美化功能
  soup.prettify
?
- 遍历文档树 ****
  1.直接搜索
      soup.head
?
  2.获取标签的名称
      soup.a.name
?
  3.获取标签的属性
      soup.a.attrs[‘href‘]
?
  4.获取标签的内容
      soup.p.text
?
  5.嵌套查找
      soup.p.b
?
  6.子节点,子孙节点
      soup.p.children
      soup.p.descendants
?
  7.父节点、祖先节点
      soup.a.parent
      soup.a.parents

  8.兄弟节点
      # 查找下面的兄弟
      soup.a.next_sibling
      soup.a.next_siblings
?
      # 查找上面的兄弟
      soup.a.previous_sibling
      soup.a.previous_siblings
?
- 搜索文档树 *******
  find: 找第一个
  find_all(): 找所有
  name、attrs、text
?
  - 文本过滤器 *******
      根据字符串进行过滤
?
      soup.find(name=‘a‘)
      soup.find_all(name=‘p‘)
      soup.find_all(attrs={"id": "link2"})
      soup.find(name=‘a‘, attrs={"id": ‘p‘})
?
  - re正则过滤器
      根据正则匹配过滤
?
      soup.find_all(name=re.compile(‘a‘))
      soup.find_all(attrs={‘id‘: re.compile(‘k‘)})
    - 列表过滤器
      根据列表内的元素匹配
?
      soup.find_all(name=[‘a‘, ‘p‘])
      soup.find_all(attrs={"id": [‘link‘, ‘k‘]})
?
  - bool过滤器
?
      soup.find_all(name=True)
      soup.find_all(attrs={"id":True})
?
  - 方法过滤器
?
      def has_id_not_class(tag):
          if tag.has_attr(‘id‘) and not tag.has_attr(‘class‘):
              return tag
?
      soup.find_all(name=has_id_not_class)
?
  - 补充
      soup.find_all(id="link")
      soup.find_all(class_=‘sister‘)

 


解析库:
BeautifulSoup4

- 安装:
- 解析库安装
pip3 install beautifulsoup4

- 解析器安装
pip3 install lxml

- 基本使用
- 导入模块
from bs4 import BeautifulSoup

- 调用解析库BeautifulSoup
# 第一个参数是 解析的文本
# 第二个参数是 解析器
# 自动补全文档标签
soup = BeautifulSoup(html_doc, ‘lxml‘)
print(soup)

- 标签美化
# prettify
html = soup.prettify()
print(html)
soup = BeautifulSoup(html, ‘lxml‘)
print(soup)
- 遍历文档树
‘‘‘
1、直接使用
2、获取标签的名称
3、获取标签的属性
4、获取标签的内容
5、嵌套选择
6、子节点、子孙节点
7、父节点、祖先节点
8、兄弟节点
‘‘‘

- 搜索文档树
- find
查找第一个

- find_all
查找所有

- 标签查找与属性查找:

- 标签:
- 字符串过滤器 字符串全局匹配
name 属性匹配
attrs 属性查找匹配
text 文本匹配
- 正则过滤器
re模块匹配
- 列表过滤器
列表内的数据匹配
- bool过滤器
True匹配
- 方法过滤器
用于一些要的属性以及不需要的属性查找。

- 属性:
- class_
- id


配合requests模块使用:
import requests
res = requests.get(‘https://www.cnblogs.com/kermitjam/p/10863925.html‘)
print(res.text)

from bs4 import BeautifulSoup
soup = BeautifulSoup(res.text, ‘lxml‘)

beautifhulsoup4的使用

标签:link   mode   名称   doc   attrs   标签   自动补全   正则匹配   block   

原文地址:https://www.cnblogs.com/tangda/p/10960974.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!