python网络爬虫-属性获取及Lambda表达式

1. 属性获取   

     到目前为止,我们已经介绍了如何获取和过滤标签,以及获取标签里的内容。但是,在网络数据采集的时你经常不需要查找标签的内容,而是需要查找标签数星星。比如标签<a>指向的URL链接包含在href属性中,或者<img>标签的图片文件包含在src属性中,这时获取标签属性就变得非常有用了。

     对于一个标签对象,可以用下面的代码获取它的全部属性:

     myTag.attrs

     要注意这行代码返回的是一个Python字典对象,可以获取和操作这些属性,比如要获取图片资源位置src,可以用下面这行代码:

    myImgTag.attrs["src"]

2. Lambda表达式

     Lambda表达式本质上就是一个函数,可以作为其他函数的变量使用;也就是说,一个函数不是定义f(x,y),而是定义成f(g(x),y),或者f(g(x),h(x))的形式。

    BeautifulSoup允许我们把特定的函数类型当做findAll函数的参数。唯一的限制条件是这些函数必须把一个标签作为参数且返回结果时布尔类型。BeautifulSoup用这个函数来评估它遇到的每个标签对象,最后把评估结果为“真”的标签保留,把其他标签剔除。

    例如,下面的代码就是获取有两个属性的标签

soup.findAlll(lambda tag:len(tag.attrs)==2)

    这行代码会找出下面的标签

<div class="body" id="content"></div>
<span style="color:red" class="title"></span>
    如果你愿意多写一点代码,那么BeautifulSoup中用Lambda表达式选择标签,将是正则表达式的完美替代方案。
3. 超越BeautifulSoup

     如果BeautifulSoup不能满足你的需求,可以看看其他的库

     lxml

    这个库可以用来解析HTM和XML文档,以非常底层的实现而闻名于世,大部分源代码是使用C语言写的。虽然学习它需要花费一段时间,但它在处理绝大多数HTML文档的速度非常快。

     HTML parser

    这是python自带的解析库(点击打开链接)。因为它不用安装,所以可以很方便地使用。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值