3.BeautifulSoup库

Posted Mrs.King_UP

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.BeautifulSoup库相关的知识,希望对你有一定的参考价值。

  1. 解析网页:
  • 导入BeautifulSoup:from bs4 import BeautifulSoup
  • 解析html或XML文件,只需设置对应的转换器即可
	import requests
	from bs4 import BeautifulSoup
	url=”http://baidu.com”
	r=requests.get(url)
	demo=r.text
	soup=BeautifulSoup(demo,”html.parser”) #两个参数:一个为html页面,另一个是解析器
	print(soup.prettify())#格式化html结构,更加美观的显示html页面信息
  1. 结构化数据的浏览:
  • soup:相当于树结构的根节点
  • soup.title:返回第一个, bs4.element.Tag类型

The Dormouse’s story

  • soup.title.name:返回标签名称,字符串str类型
    #‘title’

  • soup.title.string:获取的内容,返回值为bs4.element.NavigableString类型
    #‘The demo python introduces several python courses.’

  • soup.title.parent.name:返回第一个标签的父元素的名称
    #‘head’

  • soup.p:返回所有子孙中第一个

  • soup.p[‘class’]:返回第一个

    标签的class属性名称,结果为list列表类型
  • soup.a.attrs:返回第一个标签的所有属性值,结果为dict字典类型
    #‘href’: ‘http://www.icourse163.org/course/BIT-268001’,
    ‘class’: [‘py1’],
    ‘id’: ‘link1’
    #可以通过soup.a.attrs[‘class’]获取key为class的具体值

  • soup.find_all(name,attrs,recursive,string):结果为list形式

  • name为标签名称的检索字符串,可以为一个标签or读个标签名称的列表;如:soup.find_all(‘a’):返回所有的;soup.find_all([‘a’,’p’]):返回是所有的标签和

    标签
  • attrs:为字典形式,包含若干属性和对应的属性值,如:.find_all(‘span’,‘id’:[’link1’,’link2’]),找到所有的id为link1或link2的span标签

  • recursive:默认为True, 对子孙节点进行遍历;若为False,只对一级节点进行遍历

  • string:对标签的文本信息进行完全匹配,如:soup.find_all(‘a’,string=‘Advanced Python’),这里的string可以换成text;若想进行不完全匹配,可以soup.find_all(‘a’,string=re.compile(“Python”)),这里匹配的是包含python的字符串的标签a的列表

  • soup.find(id=”link3”):此用法和find_all相同,不过只返回第一个值;返回id=”link3”的第一个标签;soup.find(‘div’,‘articles-list’),默认为class

  • 当html结构中有注释时(b标签内部结构中有注释),通过soup.b.string并不会标志其为注释类型,但是其类型为bs4.element.Comment

以上是关于3.BeautifulSoup库的主要内容,如果未能解决你的问题,请参考以下文章

3.BeautifulSoup库

python爬虫入门

Python 利用 BeautifulSoup 爬取网站获取新闻流

Python安装第三方库,报错超时: Read timed out.

博文分类

爬虫学习3——BeautifulSoup