这周需要从网站上爬一批数据做处理,身为懒癌患者的我心里就想:妹的,还得写python代码,每爬一个就得研究正则表达式一次,有没有什么神器帮助我节约点时间,快速把问题搞定。上网搜了一下,还真有,有个网页插件叫做webscraper,研究了一发,这玩意贼神,记录下来,做个入门教程。
安装
需要:Chrome浏览器
需要:webscraper插件,在chrome商店搜索下。
基础使用
拿个入门案例,讲下基础使用,我去爬下知乎大V:寺主人所有写过的文章标题。下面的图,看我红色框框。
1.右键选中检查
2.找到Web Scraper
3.创建sitemap
4.添加选择器
重点看第三步,多点两到三个标题,这个抓取控件会帮你比对你选择的区域特征,然后会自动标记所有相同的区域特性。
5.开始抓取
设置好请求和页面加载时间
YES,搞定
支持导成EXCEL
常用组件解析
webscraper这玩意的核心在选择器上,像我们上个案例使用的是text选择器就是普通的文本选择。
选择器的几个辅助选项
Element preview:查看选中元素
Data preview:预览抓取数据
Multiple:抓取多条记录
Delay:延时、确保数据加载成功,设置个2000ms就够了
选择器种类
我挑几个我用得多的选择器
Link选择器和Image选择器:从名字就能看出,一个抓URL连接,一个抓图片,没啥好说的。
重点讲下大杀器Element selector
这是个结构体选择器,啥作用呢?它能帮助你达到什么效果?
下图中你想同时抓这三个信息怎么办?用它就好了
首先选择Element选择器,选中如图整块区域,记得多点几次,方便对比特征,让工具自助标记所有特征区域。
你可以理解它是个父选择器,双击进去
开始创建子选择器,你会发现你只能在你的父选择器里面的区域选择元素,选择标题,同时就不要勾选multiple,因为在这个父选择器里面就只有一条标题呀。
同理,创建另外两个文本子选择器,取名argee和comments。
选择解析树,也能看出父子关系。
开始爬取,搞定
这里强调一个规则:Element抓取整体结构,单独使用无法得到具体数据。所以必须在父选择器之下,建立子选择器,在子选择器里面设置具体要抓取的数据类型如text等。
分页怎么搞?
第一种选择器解决微博类似这种滚动加载效果 。你把Element selector换成Element scroll down就完事了。
第二种选择器,解决下图这种分页情况
Element click selector登场,还是拿知乎那个做个例子。
选择完Element click selector后,选择click once 和Unique Text,至于为啥选Unique Text,我也不知道,我是试出来的,反正就4个选项,多试试,哪个好用,用哪个。
你开始抓取,你会注意到自动翻页的效果。看下图,全搞定了。
webscraper基本摸索就到这里吧,这些基础用法足够帮我快速抓数据了。看网上说,使用好Element selector能够解决爬取90%的网页,反爬虫技巧就是设置好每个页面的request时间和delay时间,别设置成0导致狂抓,另外还有配套的数据库叫CouchDB(文档式数据库)进行入库分析!哈哈,如有大神级玩家,欢迎及时交流各种高级玩法。
END
Hi,我是大明
互联网技术小兵仔
在大厂和创业公司都折腾过
这里分享我在读书、投资、生活的学习和思考
如果大家喜欢我的文章
我会更加努力的
微信公众号:damingfun
领取专属 10元无门槛券
私享最新 技术干货