发布于2019-08-20 13:41 阅读(879) 评论(0) 点赞(12) 收藏(0)
假定soup是我们下载下来的网页的对象了
soup = BeautifulSoup(a, "html.parser")
# 第一种,直接将属性名作为参数名,但是有些属性不行,比如像a-b这样的属性
soup.find_all('p', id = 'p1') # 一般情况
soup.find_all('p', class_='p3') # class是保留字比较特殊,需要后面加一个_# 最通用的方法
soup.find_all('p', attrs={'class':'p3'}) # 包含这个属性就算,而不是只有这个属性
soup.find_all('p', attrs={'class':'p3','id':'pp'}) # 使用多个属性匹配
soup.find_all('p', attrs={'class':'p3','id':False}) # 指定不能有某个属性
soup.find_all('p', attrs={'id':['p1','p2']}) # 属性值是p1或p2# 正则表达式匹配
import re
soup.find_all('p', attrs={'id':re.compile('^p')}) # 使用正则表达式
soup.find_all('p', attrs={'class':True}) # 含有class属性即可
根据标签内内容来识别
这部分还是使用find_all
函数,增加text
参数
- a = '''
- <p id='p1'>段落1</p>
- <p class='p3'>段落2</p>
- <p class='p3'>文章</p>
- <p></p>
- '''
-
- soup = BeautifulSoup(a, "html.parser")
-
- soup.find_all('p', text='文章')
- soup.find_all('p', text=['段落1','段落2'])
-
- # 正则表达式
- import re
- soup.find_all('p', text=re.compile('段落'))
- soup.find_all('p',text=True)
-
- # 传入函数
- def nothing(c):
- return c not in ['段落1','段落2','文章']
- soup.find_all('p',text=nothing)
-
- # 同上
- def nothing(c):
- return c is None
- soup.find_all('p',text=nothing)
根据位置识别
有时三个标签的标签属性全都一样,所有东西都一样(内容可能不一样,但是类型是一样的),但是我们只想要第二个,这时就不能只通过标签属性内容这些方法提取了,可能它的位置是特殊的就可以用位置来提取。这里其实可以用find_all
提取出列表,然后在列表中根据位置再提取一次
后缀函数
- .name : 标签类型
- .attr :标签所有属性的字典 find特征查找非常方便
- .has :检查标签是否有某属性 True、False # 没什么用
- a = '''
- <body>
- <h><a href='www.biaoti.com'>标题</a></h>
- <p>段落1</p>
- <p></p>
- </body>
- '''
- soup = BeautifulSoup(a, 'html.parser')
- for i in soup.body.find_all(True):
- print(i.name) # 提取标签名
- print(i.attrs) # 提取标签所有属性值
- print(i.has_attr('href')) # 检查标签是否有某属性
作者:天下
链接:https://www.pythonheidong.com/blog/article/49373/0427c8ababf553e0105a/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!