beautifulsoup的系统性讲解

BeautifulSoup是一种较为常用的解析库,如果你觉得用正则表达式来解析网页过于繁琐,需要写较长的 正则表达式,那么beautifulsoup将是你的好选择。
首先选择方法主要分为标签选择css选择器选择,可以根据个人喜好来选择使用,当然我更喜欢css选择。更便捷也更直接。

1.引入方式

from bs4 omport BeautifulSoup
soup=BeautifulSoup(html,'lxml')

其中html为一段html代码,用来作为解析对象,就是将html代码转化为beautifulsoup对象。
而lxml就是解析器,除了lxml,还有xml,html.parser,以及html5.lib。不过我更喜欢用lxml。

2.标签选择

  1. print(soup.prettify()) '''格式化补全后输出'''
  2. print(soup.p.attrs['name']) '''输出p标签的name属性值'''
  3. print(soup.p.string) '''输出第一个p标签的内容’‘’
  4. print(soup.head.title.string) '''嵌套选择'''
  5. print(soup.p.contents) '''输出子节点,输出的是列表,如果用child,输出的是一个迭代器,需要用enumerate方法输出'''
  6. print(soup.p.descendants) '''输出子孙节点'''
  7. print(soup.p.parents) '''输出父节点'''
  8. print(soup.p.parents) '''输出祖先节点'''
  9. print(soup.p.siblings) '''输出兄弟节点,除此以外,兄弟节点还可以用next和previous方法,可以通过 print(list(ennumerate(soup.p.previous)))这样的枚举方法来输出。

find方法

print(soup.find_all('ul'))   '''输出所有的Ul标签'''
print(soup.find_all(id='list-1')    '''输出所有属性为id='list-1'的标签     注意,若为class属性,需要键入class_  因为class是关键字 '''
print(soup.p.find_next_sibling())
print(soup.p.find_next_siblings())
print(soup.p.find_all_next())      '''返回节点后所有符合条件的节点'''
print(soup.p.find_next())            '''返回一个符合条件的节点'''

3.css选择器

可以通过直接select()方法直接键入css属性即可完成查找。

print(soup.select(.panel .panel_heading))       '''输出class="panel"的标签下class="panel_heading"的标签,注意写的时候中间有空格'''
print(soup.select('ul li'))            '''输出ul下的li标签'''
print(ul.attrs['id'])                          '''输出ul的id属性值'''
print(li.get_text())                                     '''输出li的内容'''

BeautifulSoup的基础知识就是这些,如果想进一步的深入学习,可以查看beautifulsoup的官方网站,和查看css手册来进一步学习。

发布了3 篇原创文章 · 获赞 0 · 访问量 57

猜你喜欢

转载自blog.csdn.net/qq_46244851/article/details/104243927