小众实用的Python 爬虫库RoboBrowser
1.前言
大家好,我是安果!
今天推荐一款小众轻量级的爬虫库:RoboBrowser
RoboBrowser,Yourfriendlyneighborhoodwebscraper!由纯Python编写,运行无需独立的浏览器,它不仅可以做爬虫,还可以实现Web端的自动化
项目地址:
https://github.com/jmcarp/robobrowser
2.安装及用法
在实战之前,我们先安装依赖库及解析器
PS:官方推荐的解析器是「lxml」
#安装依赖 pip3installrobobrowser #lxml解析器(官方推荐) pip3installlxml
RoboBrowser常见的2个功能为:
- 模拟表单Form提交
- 网页数据爬取
使用 RoboBrowser 进行网页数据爬取,常见的3个方法如下:
- find
查询当前页面满足条件的第一个元素
- find_all
查询当前页面拥有共同属性的一个列表元素
- select
通过CSS选择器,查询页面,返回一个元素列表
需要指出的是,RoboBrowser依赖于BS4,所以它的使用方法和BS4类似
更多功能可以参考:
https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/
3.实战一下
我们以「 百度搜索及爬取搜索结果列表 」为例
3-1 打开目标网站
首先,我们实例化一个RoboBrowser对象
fromtimeimportsleep fromrobobrowserimportRoboBrowser home_url='https://baidu.com' #parser:解析器,HTMLparser;usedbyBeautifulSoup #官方推荐:lxml rb=RoboBrowser(history=True,parser='lxml') #打开目标网站 rb.open(home_url)
然后,使用 RoboBrowser实例对象中的 open() 方法打开目标网站
3-2 自动化表单提交
首先,使用RoboBrowser实例对象获取网页中的表单Form
然后,通过为表单中的输入框赋值模拟输入操作
最后,使用 submit_form() 方法进行表单提交,模拟一次搜索操作
#获取表单对象 bd_form=rb.get_form() print(bd_form) bd_form['wd'].value="AirPython" #提交表单,模拟一次搜索 rb.submit_form(bd_form)
3-3 数据爬取
分析搜索页面的网页结构,利用 RoboBrowser中的select()方法匹配出所有的搜索列表元素
遍历搜索列表元素,使用 find()方法查询出每一项的标题及href链接地址
#查看结果 result_elements=rb.select(".result") #搜索结果 search_result=[] #第一项的链接地址 first_href='' forindex,elementinenumerate(result_elements): title=element.find("a").text href=element.find("a")['href'] search_result.append(title) ifindex==0: first_href=element.find("a") print('第一项地址为:',href) print(search_result)
最后,使用RoboBrowser 中的 follow_link() 方法模拟一下「点击链接,查看网页详情」的操作
#跳转到第一个链接 rb.follow_link(first_href) #获取历史 print(rb.url)
需要注意的是,follow_link()方法的参数为带有href值的a标签
4.最后
文中结合百度搜索实例,使用 RoboBrowser完成了一次自动化及爬虫操作
相比Selenium、Helium 等,RoboBrowser 更轻量级,不依赖独立的浏览器及驱动
如果想处理一些简单的爬虫或Web自动化,RoboBrowser 完全够用;但是面对一些复杂的自动化场景,更建议使用Selenium、Pyppeteer、Helium等
以上就是Python爬虫库RoboBrowser的使用简介的详细内容,更多关于Python爬虫库RoboBrowser的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。