Python中的BS4模块

Python中的bs4模块

bs4 模块的 BeautifulSoup 可以用来爬取html页面的内容,配合requests库可以用于简单的爬虫。

1. 获取标签内容

# 1. 获取标签内容
from bs4 import  BeautifulSoup

# 构造对象
soup = BeautifulSoup(open('villa.html'), 'html.parser')
# 获取标签, 默认获取找到的第一个符合的内容
print(soup.title)
print(type(soup.title))
print(soup.p)

在这里插入图片描述

2. 获取标签的属性

from bs4 import  BeautifulSoup

# 构造对象
soup = BeautifulSoup(open('villa.html'), 'html.parser')
# #获取标签的属性
print(soup.p.attrs)
# 获取标签指定属性的内容
print(soup.p['id'])
print(soup.p['class'])
print(soup.p['style'])
# 对属性进行修改
soup.p['id'] = 'modifyid'
print(soup.p)
print(type(soup.p))

在这里插入图片描述

3. 获取标签的文本内容

#获取标签的文本内容
from bs4 import  BeautifulSoup

# 构造对象
soup = BeautifulSoup(open('villa.html'), 'html.parser')
print(dir(soup.title))
print(soup.title.text)
print(soup.title.string)
print(soup.title.name)
print(soup.head.title.string)

在这里插入图片描述

4. 操作子节点

# 构造对象
soup = BeautifulSoup(open('villa.html'), 'html.parser')
print(soup.head.contents)
print(soup.head.children)
for el in soup.head.children:
    print('--->', el)

在这里插入图片描述

5. 面向对象的匹配

# # 查找指定的标签内容(指定的标签)
res1 = soup.find_all('p')
print(res1)

# # 查找指定的标签内容(指定的标签)--与正则的使用
res2 = soup.find_all(re.compile(r'd+'))
print(res2)

# # 对于正则表达式进行编译, 提高查找速率;
pattern = r'd.+'
pattern = re.compile(pattern)
print(re.findall(pattern, 'dog hello d'))



# 构造对象
soup = BeautifulSoup(open('villa.html'), 'html.parser')

# 详细查找标签
print(soup.find_all('p', id='test2'))
print(soup.find_all('p', id=re.compile(r'test\d{1}')))
print(soup.find_all('p', class_="class1"))
print(soup.find_all('p', class_=re.compile(r'class\d{1}')))
# 查找多个标签
print(soup.find_all(['p', 'div']))
print(soup.find_all([re.compile('^d'), re.compile('p')]))


# 内容的匹配
print(soup.find_all(text='文章标题'))
print(soup.find_all(text=re.compile('标题')))
print(soup.find_all(text=[re.compile('标题'), 'Title']))

在这里插入图片描述

6.CSS匹配


import re
from bs4 import  BeautifulSoup
# 构造对象
soup = BeautifulSoup(open('villa.html'), 'html.parser')
# CSS常见选择器: 标签选择器(div), 类选择器(.class1), id选择器(#idname), 属性选择器(p[type="text"])
# 标签选择器(div)
res1 = soup.select("p")
print(res1)
# 类选择器(.class1)
res2 = soup.select(".class2")
print(res2)
# id选择器(#idname)
res3 = soup.select("#test1")
print(res3)
#  属性选择器(p[type="text"]
print(soup.select("p[id='test1']"))
print(soup.select("p['class']"))

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41179709/article/details/83311642