还没被玩坏的robobrowser(4)——从页面上抓取感兴趣的内容
背景
本节的知识实际上是属于Beautiful Soup的内容。
robobrowser支持Beautiful Soup,一般来说通过下面3个方法获取页面上感兴趣的内容
- find
- find_all
- select
这一节主要通过一些例子来讲解这几个方法
预备知识
一般来说学习Beautiful Soup是需要了解过滤器这个概念的。不过为了让大家能够容易理解,这里暂时屏蔽过滤器的知识,感兴趣的同学可以去官网学习一下。
通过例子学习
这一节里我们的例子还是http://itest.info/courses/2,python selenium自动化测试班这个页面。
find方法
find方法是返回页面上符合条件的第1个元素。
#coding: utf-8
import re
from robobrowser import RoboBrowser
url = 'http://itest.info/courses/2'
b = RoboBrowser(history=True)
b.open(url)
# 通过tag name抓取
#<title>重定向科技</title>
title = b.find('title')
print title.text
# 通过属性(attribute)抓取
# <img id="logo-header" src="/assets/logo-0648b8fb283a9802457da74f0c157b12.png" />
img = b.find(id='logo-header')
print img['src']
# <a href="/courses/4">android测试工具自制班</a>
print b.find(href='/courses/4').text
# <li class="active">python selenium自动化测试班</li>
print b.find(class_='active', text=re.compile('python')).text
find_all方法
find_all方法的用法跟find基本相同,但是find_all会返回所有符合条件的tag的集合(ResultSet)。
#coding: utf-8
import re
from robobrowser import RoboBrowser
url = 'http://itest.info/courses/2'
b = RoboBrowser(history=True)
b.open(url)
#页面上所有的a
all_links = b.find_all('a')
for link in all_links:
print link.text
# 页面上所有class是container的div
divs = b.find_all(class_='container')
print divs
# limit 参数控制返回的元素个数
# 页面上前2个p
first_two_p = b.find_all('p', limit=2)
print first_two_p
# 如果第1个参数是列表则返回相匹配的集合
# 页面上所有的meta和title
print b.find_all(['meta', 'img'])
select方法
select方法是我最喜欢的方法,该方法支持css选择器(可惜不是全部),返回的是list。
#coding: utf-8
import re
from robobrowser import RoboBrowser
url = 'http://itest.info/courses/2'
b = RoboBrowser(history=True)
b.open(url)
#页面上所有的a
all_links = b.select('a')
for link in all_links:
print link.text
# 页面上所有class是container的div
divs = b.select('.container')
print len(divs)
其他技巧
- 找到页面上所有具有id属性的元素
b.find_all(id=True) - 不递归查找元素。也就是说只在的直接子后代中查找
b.find('p', recursive=False)
文本版权归乙醇所有,欢迎转载,但请标明出处。
下一节:Beautiful Soup的过滤器
还没被玩坏的robobrowser(4)——从页面上抓取感兴趣的内容的更多相关文章
- 还没被玩坏的robobrowser(8)——robobrowser的实现原理
背景 学习使用工具实际上不难,不过我们应该通过阅读工具源码来提升自己的水平. 多读代码,读好代码.很不错,robobrowser的代码简单易懂,值得学习. 预备知识 源码地址 一起其实是从browse ...
- 还没被玩坏的robobrowser(7)——表单操作
背景 有一些站点是需要登录之后才能抓取内容的,另外做web测试的时候登录是家常便饭. 这一节里我们就以登陆testerhome为例,讲解一下robobrowser中form的操作. 预备知识 get_ ...
- 还没被玩坏的robobrowser(6)——follow_link
背景 在做spider的时候,我们经常会有点击链接的需求. 考虑这样的一个简单spider:获取qq.com主页上的今日话题中的内容. 一般思路是先去qq.com首页上找到今日话题的链接,然后点击这个 ...
- 还没被玩坏的robobrowser(3)——简单的spider
背景 做一个简单的spider用来获取python selenium实战教程的一些基本信息.因为python selenium每年滚动开课,所以做这样一个爬虫随时更新最新的开课信息是很有必要的. 预备 ...
- 还没被玩坏的robobrowser(1)-简介
今天偶然发现了一个很有意思的python库——robobrowser.简单的看了一下,觉得这个东东作为轻量的爬虫还是很适合的.另外这个做一些简单的web测试也未尝不可. 好了,那么问题来了. 什么是r ...
- 还没被玩坏的robobrowser(5)——Beautiful Soup的过滤器
背景 本节的知识还是属于Beautiful Soup的内容. Beautiful Soup的find和find_all方法非常强大,他们支持下面一些类型的过滤器. 字符串 最简单的过滤器是字符串.在搜 ...
- 还没被玩坏的robobrowser(2)——安装及快速开始
安装robobrowser 注意:这里假设你知道如何使用pip安装python的库的知识,如果你不了解这一块的话,点这里获取帮助. 强烈推荐使用pip安装. pip install robobrows ...
- 玩转FPGA边缘视觉——4k视频图像抓取
随着现代图像及视频处理技术的不断发展,人们对图像处理提出了新的要求,最近几年,图像的分辨率和扫描频率都有了较大范围的提升,1080P分辨率的视频已经非常流行,2K甚至4K分辨率的图像也在火热发展中. ...
- 玩爽了!直接在Chrome里抓取数据
一个小测试发现可以自动做题,于是想通过脚本的方式看能不能获取相应的题库,刚好可以学习一下JS异步操作.花了一天时间,总算跑顺利了,遇到了不少坑.记录下来分享. 1.JS如何顺序执行 JS有强大的异步操 ...
随机推荐
- 一家VC支持企业的发展轨迹——了解每次融资后股权和期权的变化,以及股份是如何被稀释的【转载】
来源:ReachVc 该文是 ReachVC 上一篇文章,是某个投资公司副总裁的独立博客,文章写得不错.如果你是一个不太了解融资的创业者,那么本文将对你很有用.通过武林外传同福客栈的例子,了解每次融资 ...
- 老周发布 UWP 应用的隐私策略(通用)
UWP 应用隐私策略 前注 本声明通用于老周所发布的所有 UWP 应用,下文简称“应用”.开发者全称:周家安,下文简称“老周”. 1.免责声明 您在使用应用过程中,请遵守<中华人民共和国宪法& ...
- MicrosoftAjax.js
MicrosoftAjax.js下载 Function.__typeName = "Function"; Function.__class = true; Function.cre ...
- IIS 之 IIS 7及以上多域名或端口绑定同一物理目录并设置不同默认文档
今天在 IIS 7 多端口或域名绑定同一物理目录,设置不同的默认文档遇到问题:同一物理目录的多个站点修改任意一个站点默认文档都会一起更改. 原因:在同一个物理目录下只有一个 web.config,并且 ...
- HDS Truecopy实现原理及项目的选择-诸多案例
copy from:http://www.eygle.com/archives/2009/05/hds_truecopy_dataguard.html 诸多案例:http://wenku.baidu. ...
- Binutils工具集中的一些比较常用的工具
addr2line addr2line是用来将程序地址转换成其所对应的程序源文件.代码行以及所对应的函数. ar ar是用来管理档案文件的,在嵌入式系统开发中,ar主要是用来对静态库进行管理. ar常 ...
- jquery keycode
判断键盘按下的键 $(window).keydown(function(event) { switch (event.which) { case (13): //Enter //要执行的操作 brea ...
- 苹果电脑Macbook怎么编辑hosts文件的方法
苹果电脑Macbook怎么编辑hosts文件的方法 https://jingyan.baidu.com/article/fec4bce2690417f2618d8b07.html 文章 ...
- 腾讯云ubuntu安装Mysql并配置远程访问
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6378914.html 一:修改SSH配置 输入 su 进入root模式.修改ssh配置: sudo vi /e ...
- GIT服务器实现web代码自动部署
之前在一台vps服务器上面搭建了Git服务器,用来做代码管理,方便团队开发.但是问题也就相应的来了,使用git可以轻松的上传代码,而由于做的是web开发,每次还都得到服务器上把代码手动pull或者复制 ...