关于pycharm:Python爬虫BeautifulSoup库详解

22次阅读

共计 2320 个字符,预计需要花费 6 分钟才能阅读完成。

BeautifulSoup 简介

Beautiful Soup 是一个能够从 HTML 或 XML 文件中提取数据的 Python 库. 它可能通过你喜爱的转换器实现习用的文档导航, 查找, 批改文档的形式.Beautiful Soup 会帮你节俭数小时甚至数天的工作工夫.
装置:pip3 install BeautifulSoup4

用法

1. 根本用法

from bs4 import BeautifulSoup
bs = BeautifulSoup(html,"html.parser") # 缩进格局
print(bs.prettify()) # 格式化 html 构造
print(bs.title) # 获取 title 标签的名称
print(bs.title.name) # 获取 title 的 name
print(bs.title.string) # 获取 head 标签的所有内容
print(bs.head) 
print(bs.div)  # 获取第一个 div 标签中的所有内容
print(bs.div["id"]) # 获取第一个 div 标签的 id 的值
print(bs.a) # 获取第一个 a 标签中的所有内容
print(bs.find_all("a")) # 获取所有的 a 标签
print(bs.find(id="u1")) # 获取 id="u1"
for item in bs.find_all("a"): 
    print(item.get("href")) # 获取所有的 a 标签,并遍历打印 a 标签中的 href 的值
for item in bs.find_all("a"): 
    print(item.get_text())

2. 抉择元素

from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'lxml')
print(soup.title)
print(type(soup.title))
print(soup.head)
print(soup.p)
#获取名称
print(soup.title.name)
print(soup.p.attrs['name'])
print(soup.p['name'])
#获取内容
print(soup.p.string)
#获取子孙节点
print(soup.p.children)
for i, child in enumerate(soup.p.children):
    print(i, child)

3.find_all()

find_all(name , attrs , recursive , text , **kwargs)
可依据标签名、属性、内容查找文档, 返回所有符合条件的内容
#通过标签
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'lxml')
print(soup.find_all('ul'))
print(type(soup.find_all('ul')[0]))
#通过属性
print(soup.find_all(attrs={'id': 'list-1'}))
print(soup.find_all(attrs={'name': 'elements'}))
print(soup.find_all(id='list-1'))
print(soup.find_all(class_='element'))
#通过 text
print(soup.find_all(text='Foo'))

3.find()

find(name , attrs , recursive , text , **kwargs)
find 返回单个元素,find_all 返回所有元素

from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'lxml')
print(soup.find('ul'))
print(type(soup.find('ul')))
print(soup.find('page'))

find_parents() # 返回所有先人节点
find_parent() # 返回间接父节点

find_next_siblings() 返回前面所有兄弟节点
find_next_sibling() 返回前面第一个兄弟节点


find_previous_siblings() 返回后面所有兄弟节点
find_previous_sibling() 返回后面第一个兄弟节点

find_all_next() 返回节点后所有符合条件的节点
find_next() 返回第一个符合条件的节点

find_all_previous() 返回节点后所有符合条件的节点
find_previous() 返回第一个符合条件的节点

5.css 抉择 – 通过 select() 间接传入 CSS 选择器即可实现抉择

from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'lxml')
print(soup.select('.panel .panel-heading'))
print(soup.select('ul li'))
print(soup.select('#list-2 .element'))
print(type(soup.select('ul')[0]))

for ul in soup.select('ul'):
    print(ul.select('li'))
#取得属性
for ul in soup.select('ul'):
    print(ul['id'])
    print(ul.attrs['id'])
#获取内容
for li in soup.select('li'):
    print(li.get_text())

援用
BeautifulSoup 库详解(集体整顿)
Python 中 BeautifulSoup 库的用法
Beautiful Soup 4.4.0 文档

正文完
 0