美文网首页
数据爬虫入门与进阶

数据爬虫入门与进阶

作者: CJDUDU | 来源:发表于2017-09-12 00:11 被阅读0次

    说明:本文章内容学习自“三 节 课”平台的《人人都能学会的数据爬虫课》。

    产品和运营工作中,经常需要做出大量的决策,在很多时候决策的做出是需要靠数据进行支撑的,数据能够让我们避免自己的主观判断。

    如何获取到未经行业机构处理过的数据,拿到热乎的一手资料呢?爬虫,能实现大部分(80%)的网站数据的抓取。

    一、爬虫的应用场景

    1、爬虫(网络爬虫/spider/数据抓取):自动抓取万维网的程序或脚本。

    2、常见应用场景和功能

    (1)市场营销

    a、搜索引擎优化(Search Engine Optimization):获取本品和竞品排名,优化搜索引擎方案。

    b、市场研究(Market Research):市场容量的研究和市场行业趋势的变化。

    c、潜在客户/线索(Lead Generation):对知乎等各种话题关注者,微博粉丝进行定向推送。

    (2)竞品分析

    a、舆情分析(Reviews and Sentiments):社交媒体/购物网站里评论里收集反馈与舆情分析。

    b、竞品社交媒体发布及其粉丝(Content Approach and Followers):竞品最近发布了什么内容,转化粉丝。

    c、价格对照(Price Comparison):根据CPI(居民消费价格指数)价格动态波动。

    d、变化检测(Change Detection):竞品促销,价格变化,品类扩充。

    (3)职业发展与个人生活

    a、求职招聘(Job Hunting and Recruiting):求职者定向求职,Hr定向挖人。

    b、产品和服务(Products and Services):比较价格和口碑。

    c、财务规划(Financial Planning):证券专家的评论。

    d、买/租/卖(Looking to Buy/Rent/Sell)。

    二、常见抓取工具

    1、excel。(简单的table布局适用)

    2、第三方工具:火车头,八爪鱼。

    3、web Scraper。

    4、Python Scraper。

    三、Excel抓取简单的数据

    操作步骤说明

    1、打开可抓取的网页,F12检查元素,NetWork项,选择Filter,刷新重新加载页面,得到对应的xml文件,右键 open in new tab就可以看到相应网站内所有要抓取的信息。

    2、打开Excel,选择数据标签页,点击自网站,输入要抓取的信息网址,黄色标记点绿,加载完后点击导入即可。

    Excel作为抓取工具的总结:

    1、用excel的学习成本较低,上手快;

    2、可以用excel的一些工具对数据进行操作,比如上图中的全部刷新(实时获取网站数据),以及分列,合并计算等小工具的使用;

    3、局限性较大,只能对一些老的以table布局的网站起作用。

    四、爬虫插件 web Scraper

    能翻墙的请直接在谷歌应用商店,搜索webscraper,添加扩展程序,自动安装好后就可以直接使用了。不能翻墙的请自行百度。

    1、页面可视范围内基本元素的抓取

    新建站点地图create new sitemap(import sitemap 需要用到JSON格式的特殊代码),选择multiple,再点击select,点选页面要选中的元素,点选两个之后,插件就可以自动识别到所有要点选的同类元素。(从代码的角度设想该插件的原理应该是,批量获取页面中同种级别元素内的text文本内容)

    建好选择器之后,我们就可以预览各种效果,然后可以开始抓取了:点击Scrape,直接Start Scraping,抓取完毕之后会有成功的提示,此时我们可以把抓取好的数据,选择是否导出(点击Export Date As CSV)。

    此方法只能下载一个页面初始加载时的数据量。这个不难想象,因为页面的数据是由鼠标滚轮滚动时访问数据库进行页面加载的,元素的内容都是页面事件触发后生成的,所以获取不到。

    开个脑洞:如果能写个脚本,让程序自动触发鼠标的滚动事件,那是不是就能获取到更多呢?

    2、分页的所有元素抓取

    元素分页的规律性,对要抓取的网页page进行限定。

    对新建的站点地图进行编辑,Edit Metadata,对照url上呈现的翻页规则,将Start URL里对应的翻页规则进行改变。规则是:[想抓取的初始页码值-想抓取得结束页码值:页码差值]。

    比如豆瓣这个网页的翻页规律是start参数依次加25,等差数列,差值为25,所以可以写成:

    https://movie.douban.com/top250?start=[0-500:25]&filter=

    一般规律为page,一页一页加法,所以写成 page=[1-23]

    建好之后,遵照 1、的方法,新建selector,最后进行scrape就可以了。

    3、多元素抓取---进阶

    (1)、一个页面如何抓取多个元素呢?

    (2)、现今流行的滚动或交互式动态加载(不规则分页)模式下又该如何抓取元素内容呢?

    (3)、快捷键快速选中某个元素;

    (4)、用链接采集二级三级页面;

    (5)、抓取图片和表单的方法;

    概念总结:以上各种方法其实根据的原理都是页面元素,模拟浏览器事件,对浏览器加载出来的页面中的元素内容或者资源进行提取。

    4、详细进阶方式(80%)

    (1)一个页面抓取多个元素(一般是相关联的元素)

    同之前的例子,先新建一个站点地图。

    为此站点新建一个选择器,type为element,Multiple多选,选中所有大标签,done selecting后可预览一下选中的项

    选中大层级元素

    保存好外层选择器后,点击选择器,进入子选择器页面,再次add selector,添加子层选择器。

    选中子层级元素

    添加了多个子层选择器后,可以预览一下效果是否如你所愿。

    多个选择器可以先预览效果 抓取得到的元素结果集预览

    最后,就可以用之前的招数,开始进行scrape抓取,生成csv了。

    (2)不规律分页的抓取

    初始步骤同上,新建站点地图,再新建选择器,如下图,选择好要抓取的元素,选择好需要浏览器自动执行点击事件的元素“加载更多”,点击类型选择click more,告诉浏览器要一直加载完成方能结束,click element uniqueness 告诉浏览器,当点击选择器变成什么样子了就不需要再继续进行了,一般有 unique text(文本变化),html + text(网址或文本变化),html (网页变化),css selecor(选择器的样式变化)。

    新建一个Multiple属性的Element click类型,selector指向大元素

    新建一个click selector,指向加载更多元素 在上面的基础上,新建一个子选择器,选择公司名所在的元素 子选择器按一般的规则来,text类型,非multiple,selector选中标题文本

    结束上述步骤后抓取就可以了。抓取的速度有时会很慢,需要耐心等待。

    抓取的结果示意图,可保存成csv

    (3)快捷键抓取

    点击selector选择元素后,点击Enable Key开启键盘操作,鼠标悬停,等采集字段变绿后按键盘:S=选中;P=父类;C=子类。

    可通过键盘的S,P,C进行鼠标悬停选取

    (4)用链接采集二级三级页面

    按Element方法圈好要抓取的元素大类。

    element类型的抓取

    抓取子元素招股说明书名称。type为text类型

    在element类型大类中,抓取说明书名称子类

    再抓取一个子类,招股说明书发布的日期。type为text类型

    在element类型大类下抓取日期子类

    接下来抓取列表的三级页面链接,注意新建的选择器type为link类型。

    在Element大类下,抓取页面的链接子类

    要抓取的类的层级结构如下:

    downfile为大类选择器名称,此图中展示的是大类下的三个要抓取的子类

    以上就绪之后,我们还需要在三级页面中设置一个link选择器。

    打开三级页面(选择一个招股说明书点击打开新页面),在上一次设置的link选择器的子级,新建一个选择器,type为link,链接到对应的下载按钮即可。

    明细页面新建一个link类型的选择器,选择页面的下载按钮 层级关系

    以上都设置完成后,即可点击进行抓取。

    抓取的过程中,插件会自动将页面的二级三级页面依次打开,并进行抓取,抓取完成后生成的是一个带有下载链接的数据包。此时我们可以通过迅雷或者QQ旋风批量下载功能,对需要的文件进行下载。

    下载的CSV数据文件

    Q:link类型和Element Click等类型有什么区别?

    A:以上两种类型都能进行采集二级或者三级页面数据,但,新链接为A标签时,Type都可以用Link,采集URL时,必须要用link类型。非A标签必须要把type设为Element click等类型才可以采集二三级页面。

    (5)抓取图片和表单

    a.抓取图片

    一般抓取图片的链接再用工具进行批量比较合适,type有为image的项。

    b.抓取表单Table

    抓取table的头和数据子类

    至此,数据爬虫基本方法介绍完毕。

    五、常见反爬虫方法。

    (1)反爬虫常见手段和应对方法:

    a文件头 user-agent检查:访问设备返回数据进行检查;

    b动态加载(Ajax Javascript等):实时更新;

    c用户行为(cookies+请求时间间隔):频率太高则临时黑名单;

    d人机交互验证:图形验证码等;

    反爬应对方法:

    web scraper用浏览器避免user-agent检查,将cookies传输过去所以不会被检查,是浏览器所以可以实现ajax javascript等方法,设置了时间间隔所以不会被查封。

    (2)反爬中的奇葩

    web scraper对于有些情况是无法抓取的。

    比如

    a美团网网页端的团购价格,是使用的雪碧图(小图片集合到大图中,根据定位来显示价格),页面中无法抓取到对应的元素,所以无法抓取到团购价格。但是手机端可以抓取。

    b去哪儿网机票价格是用的元素位移,手机端用字体替换。

    网页端方式:1240 = 1 6 1 0 + 2 4(抓取下来用excel进行替换,或者脚本进行替换抓取等方法)

    手机端方式:用ttf字体文件,将0123456789顺序替换为0153246987。

    c将结果解析为图片。

    对于这些奇葩网站的反爬技术,需要有高超的应对方法。

    但是暂时还没有攻略。

    平台给的作业。http://pm25.in/rank

    作业进阶

    http://www.cninfo.com.cn/cninfo-new/fulltextSearch?code=¬autosubmit=&keyWord=%E6%8B%9B%E8%82%A1%E8%AF%B4%E6%98%8E%E4%B9%A6

    麦淘

    http://m.maitao.com/classify/null?ids=1

    IT桔子

    https://www.itjuzi.com/search?key=%E4%BA%B2%E5%AD%90

    相关文章

      网友评论

          本文标题:数据爬虫入门与进阶

          本文链接:https://www.haomeiwen.com/subject/gehqsxtx.html