爬虫入门(一)基于webmagic理解爬虫原理及核心业务逻辑
0.爬虫逻辑
一句话,对网页进行处理,偷到想要的数据,比如文章标题内容,然后存起来.
核心步骤:
下载页面--处理(从page收集数据)--管理(做后续处理)--储存(持久化到文件或DB)
在webmagic里分为四部分 Downloader、PageProcessor、Scheduler、Pipeline四大组件
这四大组件对应爬虫生命周期中的下载、处理、管理和持久化等功能
学习webmagic可以在http://webmagic.io/docs/.全中文很方便
1.下载page
首先在这个步骤一般通过httpClient,或httpConnection,url这几个类去实现下载功能.
这个步骤会存在403问题,网站拒绝访问.可能是因为缺少一些请求头,比如user-agent,cookie等等.
因为网站检测到你是不真实访问.或者连续访问频率过高.这几个问题可以在代码里加header或者修改频率,一般爬虫框架都有对应的方法.
2.对每个想要的数据进行处理
面向数据字段做分析,使用xpath或者正则匹配想要的数据.
在webmagic获得链接可以在拿到a标签的基础下调用link()方法即可.webmagic的xpath的拿属性的语法(@attribute)没支持.
3.管理
核心逻辑是一是对待抓取的URL队列进行管理。二是对已抓取的URL进行去重。如果你只是在本地执行规模比较小的爬虫,那么基本无需使用这方面.URL管理很重要,自动化的爬虫不应该需要输入多次目前路径,而是让爬虫自己去匹配和寻找子URL,直到无URL可爬.
4.持久化
存储到磁盘.以固定数据格式(比如Json)储存到文件或者储存到DB是常见的操作.
5.思考
理解爬虫后,就明白为什么SEO里需要将网页静态化,减少动态网页的加载,对爬虫友好也意味着在搜索引擎里可以相对靠前.
爬虫是数据分析的基础,结合大数据做mapreduce也是很常见的.另外爬虫也需要讲求效率,多线程的操作,这些算是高级爬虫 开发者必备的知识.初入门的人核心在于数据匹配能力(正则xpath等语法能力和工具的熟悉),进阶的玩家应该学会如何处理动态网页(前端渲染的网页),比如爬虫内嵌浏览器内核,使用Selenium、HtmlUnit或者PhantomJs工具,但更好的是自己分析异步请求,搞清楚懒加载.
因为网站的html偶尔有改变,这也许就是爬虫岗位持久不息,一套吃不死的原因吧.
转载请注明来源,谢谢