首页 > 编程语言 > 详细

Python-bs4

时间:2019-10-05 11:08:16      阅读:48      评论:0      收藏:0      [点我收藏+]
form bs4 import BeautifulSoup #引入包

使用方式:可以将一个html文档,转化为指定的对象,然后通过对象的方法或属性去查找指定的内容。

(1)转化本地文件:

  soup = BeautifulSoup(open(本地文件),lxml) #lxml是解析器

 

(2)转化网络文件:

  soup = BeautifulSoup(open(字符串类型或者字节类型),lxml)

实操:

#生成对象
soup = BeautifulSoup(open(soup_text.html,encoding=utf8),lxml)

(1)根据标签名查找:

#查找对象里的a标签,这种方法只能找到第1个符合要求的标签
print(soup.a) 

技术分享图片

(2)获取属性:

print(soup.a[href])

技术分享图片

print(soup.a[href])
print(soup.a[title])
print(soup.a[target])

技术分享图片

#打印a标签所有属性,并返回一个字典
print(soup.a.attrs)

技术分享图片

(3)获取内容:

#打印a标签里的文本
print(soup.a.text)

技术分享图片

print(soup.a.text)
print(soup.a.string)

print(soup.a.get_text())
三者的区别为:如果标签里还有标签,string获取结果为None,其他两个方法可以获取内容
(4)find
#找第1个符合要求的a
soup.find(a)
#查找title = ‘qin‘ 的a标签
soup.find(a, title = qin)
#查找alt = ‘qi‘ 的a标签
soup.find(a, alt = qi)
#注意,当用class查找时,格式为class_ ,因为class是关键字,无法直接使用
soup.find(a, class_ = abcd)
#先找到class = ‘tang‘ 的div,再通过这个div找到class = ‘du‘的a标签,此时找到的a标签是这个div里的第1个a标签
div = soup.find(div, class_ = tang)
div.find(a, class_ = du)

(5)find_all

#查找所有的a标签,返回一个列表
list = soup.find_all(a)
#查找calss = ‘tang‘ 的div 里面所有的a标签
div = soup.find(div , class_ = tang)
div.find_all(a)
#查找calss = ‘tang‘ 的div 里面所有的a标签和b标签
div = soup.find(div , class_ = tang)
div.find_all([‘a’,b])
#查找calss = ‘tang‘ 的div 里面前2个a标签
div = soup.find(div , class_ = tang)
div.find_all(a, limit = 2)

 (6)select

根据选择器选择指定的内容:a 标签选择器,.dudu类选择器,#lala id选择器,a,.dudu #lala 组合选择器,

div .dudu #lala .meme 层级选择器,只要是子级就可以选择

div > p > a > .dudu 只能是儿子才能选择

#查找层级下面所有的a,返回1个列表
soup.select(.tang > ul > li > a)
#查找层级里下标为2的a标签
soup.select(.tang > ul > li > a)[2]
#查找层级里下标为2的a标签里的内容
soup.select(.tang > ul > li > a)[2].text
#查找层级里下标为2的a标签里的href属性
soup.select(.tang > ul > li > a)[2][href]

 

 

 新手学习,如果错漏,望指正!!!

 

 

Python-bs4

原文:https://www.cnblogs.com/xclzdjj/p/11623945.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!