关于pycharm:Python爬虫BeautifulSoup库详解

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 文档

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理