BeautifulSoup 知识小点

众所周知,requests+BeautifulSoup是编写简单爬虫的利器。
同时BeautifulSoup提供了很多的方式去定位元素,通常我们定位一个元素的方式有多种,xpath定位,css定位,id定位等等。

知识碎片

string和get_text()的区别
html_doc = """
<html><head><title>The Dormouse's story</title></head>
<body>
"""

拿官网上的一个简单的例子,并且使用bs4处理后,要获取title中的使用

soup.title.string

但是当,我们在<title>The Dormouse's story</title>多加入一个<a>hello work</a>使之变成<title>The Dormouse's story<a>hello work</a></title>此时string的返回值则为None

get_text()方法则能够返回期望的值。

同时在不少的博客教程中也采用了.text这个方法。
查看源码

    def get_text(self, separator=u"", strip=False,
                 types=(NavigableString, CData)):
        """
        Get all child strings, concatenated using the given separator.
        """
        return separator.join([s for s in self._all_strings(
                    strip, types=types)])
    getText = get_text
    text = property(get_text)

最后两句表明,使用.text和getText这两种方式,都是调用的get_text()这个方法。因此他们并没有任何的区别。

soup.select()

该方法不常被使用到,属于css选择器语法。
css选择器语法:http://www.w3school.com.cn/cssref/css_selectors.asp

正则表达式

bs4同时支持和正则表达式的语法

import re
for tag in soup.find_all(re.compile("^b")):
    print(tag.name)

寻找到以b开头的标签。

使用何种方式定位元素需要根据自己的具体要求来选择,但是当遇到不好定位的元素时,多了解几种定位方式就变得非常重要了。

参考资料

官方文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html
css选择器语法:http://www.w3school.com.cn/cssref/css_selectors.asp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值