背景 有一些站点是需要登录之后才能抓取内容的,另外做web测试的时候登录是家常便饭. 这一节里我们就以登陆testerhome为例,讲解一下robobrowser中form的操作. 预备知识 get_form方法用来抓取form; submit_form方法用来提交表单; form[name].value=方法用来给文本框赋值,也就是说往文本框里写内容; 代码 #coding: utf-8 import re from robobrowser import RoboBrowser url = '…
今天偶然发现了一个很有意思的python库——robobrowser.简单的看了一下,觉得这个东东作为轻量的爬虫还是很适合的.另外这个做一些简单的web测试也未尝不可. 好了,那么问题来了. 什么是robobrowser 官方的给出的答案是:RoboBrowser: Your friendly neighborhood web scraper.原谅我这一生不羁放纵不爱读书,真心不知道怎么用博大精深的汉语来翻译这句话,有知道的同学还请告诉一下. 简单来说robobrowser是一个浏览器,没有界面…
背景 在做spider的时候,我们经常会有点击链接的需求. 考虑这样的一个简单spider:获取qq.com主页上的今日话题中的内容. 一般思路是先去qq.com首页上找到今日话题的链接,然后点击这个链接到内容页面,最后抓取里面的内容就好了. 这一节里我们就要实现这个功能. 预备知识 robobrowser的follow_link方法可以点击链接并自动完成跳转. 代码 #coding: utf-8 import re from robobrowser import RoboBrowser url…
背景 学习使用工具实际上不难,不过我们应该通过阅读工具源码来提升自己的水平. 多读代码,读好代码.很不错,robobrowser的代码简单易懂,值得学习. 预备知识 源码地址 一起其实是从browser.py开始的 要点 RoboState类里,页面上内容的抓取和处理实际上委托给了BeautifulSoup.RoboState类的_parsed对象实际上就是BeautifulSoup的实例: RoboState类中保存了每个请求的响应内容--response.content: RoboBrows…
背景 本节的知识还是属于Beautiful Soup的内容. Beautiful Soup的find和find_all方法非常强大,他们支持下面一些类型的过滤器. 字符串 最简单的过滤器是字符串.在搜索方法中传入一个字符串参数,Beautiful Soup会查找与字符串完整匹配的内容,下面的例子用于查找文档中所有的<b>标签: soup.find_all('b') 正则表达式 如果传入正则表达式作为参数,Beautiful Soup会通过正则表达式的 match() 来匹配内容.下面例子中找出…
背景 本节的知识实际上是属于Beautiful Soup的内容. robobrowser支持Beautiful Soup,一般来说通过下面3个方法获取页面上感兴趣的内容 find find_all select 这一节主要通过一些例子来讲解这几个方法 预备知识 一般来说学习Beautiful Soup是需要了解过滤器这个概念的.不过为了让大家能够容易理解,这里暂时屏蔽过滤器的知识,感兴趣的同学可以去官网学习一下. 通过例子学习 这一节里我们的例子还是http://itest.info/cours…
背景 做一个简单的spider用来获取python selenium实战教程的一些基本信息.因为python selenium每年滚动开课,所以做这样一个爬虫随时更新最新的开课信息是很有必要的. 预备知识 python语法,不会python的同学建议通过这个视频学习: 安装好robobrowser,没有安装的同学参考这里: 任务分解 这个简单的spider任务可以进行进一步的分解: 访问python selenium自动化测试班页面: 获取这个班的名称--python selenium自动化测试…
安装robobrowser 注意:这里假设你知道如何使用pip安装python的库的知识,如果你不了解这一块的话,点这里获取帮助. 强烈推荐使用pip安装. pip install robobrowser -i http://pypi.douban.com/simple/ 这里用上了豆瓣源,原因你懂得. 快速开始 新建1个start.py文本文件,然后敲入下面的代码 import re from robobrowser import RoboBrowser b = RoboBrowser(his…
该提示在Lodop旧版本中是: 提示"WebSocket没准备好,点确定继续",提示“C-Lodop没准备好”,新版本修改了该提示的描述“网页还没下载完毕,请稍等一下再操作.”,让问题更解释更直观. 问题原因:调用C-Lodop云打印时机太早,调用打印语句(print或preview等)时机太早,在页面第一次加载完成后有几百毫秒时间等待WebSocket通讯服务准备完成. 解决方法:方法一:等待C-Lodop准备好再执行调用打印方法打印,用如下写法,OpenPreview()代表自己的…
<!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>form表单学习笔记</title> </head> <body> <!-- 在旧版的html中,form表单与input等元素必须嵌套使用,为了排版方便,在html中提出了新方法…