BeautifulSoup常用的函数

https://movie.douban.com/top250为例子

引用

from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc, 'lxml')

html_doc用requests获取

选择器

1.标签选择器

标签选择器只选择第一个

选择元素
嵌套选择
soup.div.p #返回 标签+内容
<p class="appintro-title">豆瓣</p>
选择内容
soup.title.string  #返回str
豆瓣电影 Top 250

也可以 soup.title.get_text()
选择属性
soup.div.attrs   #返回dict
{'id': 'db-global-nav', 'class': ['global-nav']}

soup.div['id']   #soup.div.attrs['id'] 返回dict中的value
db-global-nav
其他

选择标签名字 soup.title.name 返回title

2.find_all()

find_all( name , attrs , recursive , text , **kwargs )
  • name:html中的标签,如'li' ,'a','div','p'
soup.find_all('li') #返回list,都 标签+内容
                    #就算是li标签中有li标签,都会分开算成2个 
  • attrs:属性,头标签里面的东西,如'id','class','href'
soup.find_all(attrs={'class':'title'})
#返回list形式,都 标签+内容
#如果不用attrs,class用的是class_ 
#soup.find_all(class_="title")
  • text:搜索有的字符串内容,非标签了,而是内容
    list,都 标签+内容

  • limit:限制数目输出

soup.find_all(attrs={'class':'title'}, limit=2)
[<span class="title">肖申克的救赎</span>, <span class="title"> / The Shawshank Redemption</span>]

参数的其他写法
字符串为基本。另有正则,列表,布朗。甚至方法(lambda…)。
正则:

soup.find_all(text=re.compile('克的'))
[<span class="title">肖申克的救赎</span>]

列表:任一匹配则返回

soup.find_all(['em', 'title'])

布朗:

for a in soup.find_all(True,recursive=False):  #recursive表示查不查子孙节点
    print(a.name)
html

方法:

soup.find_all(lambda a:len(a.attrs)==3)

3.select()

‘.class_name’
‘#id_name’
‘tag_name’
都list, 标签+内容

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值