python网络爬虫-属性获取及Lambda表达式
来源:互联网 发布:620f清零软件 编辑:程序博客网 时间:2024/06/06 16:33
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自带的解析库(点击打开链接)。因为它不用安装,所以可以很方便地使用。
- python网络爬虫-属性获取及Lambda表达式
- Python网络爬虫-正则表达式
- Python--正则表达式/单线程网络爬虫
- Python网络爬虫(3)正则表达式
- python网络爬虫-正则表达式和BeautifulSoup
- python之正则表达式以及网络爬虫
- Python 网络爬虫获取豆瓣信息
- Python网络爬虫(1)获取网页
- Python网络爬虫获取淘宝商品价格
- Python网络爬虫获取股票信息
- python网络数据学习范例-正则表达式+lambda函数
- Python爬虫包 BeautifulSoup 学习(九) 正则表达式与Lambda表达式
- python lambda表达式
- Python的Lambda表达式
- Python的Lambda表达式
- Lambda表达式之Python
- python lambda表达式
- Python lambda表达式
- 美国视频质量测试的解决方案
- Docker中安装Tomcat7
- 使用face++的API接口-人脸识别
- 大规模Hadoop集群在腾讯数据仓库TDW的实践
- android自定义图片三级缓存(内存、SD卡、网络)
- python网络爬虫-属性获取及Lambda表达式
- java和c#接口定义区别--学习笔记
- 集合中的并发
- 事件分发机制 图解
- 虚拟机安装centos7
- Codeforces Round #434 (Div. 2): D. Polycarp's phone book(字典树)
- 异步任务HttpUrlconnect 的GET 网络请求
- 二叉搜索树
- 后台接收前台 String json 取单个值问题-java