Python Spider:Beautifulsoup基本使用

Beautifulsoup:解析库
安装:pip3 install beautifulsoup4(第四版本)
用法:
from bs4 import Beautifulsoup
创建解析对象:
soup = Beautifulsoup(markup,解析器)
Markup:目标字符串
解析器:
支持:python标准库解析器:html.parser
lxml HTML解析器:‘lxml’
lxml XML解析器:‘xml’
html5lib解析器:‘html5lib’
如:soup = Beautifulsoup(html,‘xml’)
soup.prettify()格式化目标字符串,容错补全
常用选择器:
标签选择器:
soup.标签名(获取目标字符串第一次出现的标签)
soup.title:title标签
soup.title.name:获取标签名称,返回值为title
soup.title.attrs[‘属性名’]:获取属性值
soup.title[‘属性名’]:获取属性值
soup.title.string:获取标签的文本内容
嵌套选择:
soup.head.title:获取head标签中的title标签对象
子节点和子孙节点的选择:
soup.title.contents:获取自己点列表
soup.title.children:获取子节点,是一个迭代器
for i, child in enumerate(soup.title.children)
soup.title.descendants:获取所有的子孙节点,返回一个迭代器
父子点和祖先节点:
soup.title.parent:获取父节点
soup.title.parents:获取所有的祖先节点
兄弟节点:
soup.title.next_siblings:下一个兄弟节点
soup.title.previous_siblings:上一个兄弟节点
标准选择器:
soup = Beaufulsoup(html,‘xml’)
find_all()
soup.find_all(‘标签名’):获取所有满足条件的列表
soup.find_all(attrs={‘属性名’:‘属性值’})
如:soup.find_all(attrs={‘id’:‘list’}
或者直接:
soup.find_all(id=‘list’)
soup.find_all(_class=‘xxx’):因为class是python中的关键字,所以加下划线避免冲突
soup.find_all(text=‘xxx’):匹配文本内容为xx的标签
find():用法一样,只返回匹配结果的第一个元素
CSS选择器:层层选择
soup.select(‘选择器’)
class选择器:.xxx
soup.select(’.panel .panel-heading’) class属性为panel 里的panel-heading
id:选择器:#xxx
soup.select(’#list .element’) id为list的节点中的class值为element的标签
标签选择器:
soup.select(‘ul li’):ul标签中的li标签
获取标签属性和内容:
通过以上选择器获取的标签后:
标签[‘属性名’] :获取属性值
标签.get_text():获取标签的文本内容
推荐使用lxml解析器
标签选择器筛选功能弱但速度快

你可能感兴趣的:(技术,爬虫,解析库)