爬虫分享

2019-11-14  本文已影响0人  EarsXin

目标:对不懂技术的同学分享爬虫,帮助其提高在工作的效率

Slogan

无须编程、不敲代码的爬虫技术


1.png

本次分享目标与价值

分享内容

1. 什么是爬虫?

公式:爬虫(网络爬虫、spider、数据抓取) = 自动抓取万维网的程序或者脚本

爬虫抓取的范围:无法实现不能登录就下载论文、CSDN附件,仅能采集人眼能看到的所有页面元素。

所以说,爬虫就是代替人工规律性地采集和保存几千/万个页面上的一手数据。或者再通俗一点是让程序帮忙统计网页上的数据。

2. 数据抓取的常规场景(产品 - 竞品分析)

2.png

3. Web Scraper

  1. 引入语:提到爬取网络上的数据爬虫,很多人第一反应我想应该是用代码编码的方式去爬取网络站点的数据,但是编码的门槛太高使得我们很多非技术专业的同学在数据抓取上不得不人工复制粘贴或者淘宝自费请人获取自己需要的数据。我们今天要介绍的Web Scraper是一个免费、易用工具,它作为浏览器的插件,几乎能够抓取所有的web 站点数据。

  2. 官网标语: Our goal is to make web data extraction esay and accessible for everyone.

  3. 官网地址:https://webscraper.io/

  4. 应用场景

    1. 统计公众号所有标题、时间
    2. 抓取知乎某个问题的所有回答阅读、点赞

3. 准备工作

  1. 浏览器安装:安装Chrome浏览器或者QQ浏览器

  2. Web Scraper插件安装:Chrome扩展插件和QQ浏览器或者插件

  3. 可以用外网的同学通过官方渠道

  4. 无法用外网的同学通过链接

  5. 百度网盘:链接:https://pan.baidu.com/s/1dV8xDGeG1GLvUimPLaFuKA 密码:yb3q

  6. 打开控制台:鼠标右键 -> 检查 或者 F12

    WechatIMG608.jpeg
  1. 开始爬取第一个爬虫

  2. 爬取目标用Web Scraper抓取 一个知识工作者陈伟华 在知乎上发布的文章标题

  3. 创建一个新站点:Dev Tool -> Create new sitemap -> import Sitemap -> 粘贴下面的代码 -> rename Sitemap (Optional)

    WechatIMG609.jpeg
WechatIMG610.jpeg
{"_id":"chenweihua","startUrl":["https://www.zhihu.com/people/chen-wei-hua-72/answers"],"selectors":[{"id":"title","type":"SelectorText","parentSelectors":["_root"],"selector":"[itemprop='zhihu:question'] a","multiple":true,"regex":"","delay":0}]}
  1. 开始爬取数据:Sitemap {sitemap name} -> Scrape -> Start scraping
    WechatIMG610.jpeg
  1. 导出数据:Sitemap {sitemap name} -> Export data to CSV
WechatIMG614.jpeg
  1. 自己设置参数抓取第二个爬虫 —— 以第一个爬虫为例

①创建一个新站点Create new sitemap

输入站点名(自定义)和网址(输入目标网址),点击Create sitemap确认按钮


WechatIMG615.jpeg
WechatIMG616.jpeg

②增加选择器,点击Add new selector


WechatIMG617.jpeg
  1. Type选择
  2. Selector选择:点击Selector 的 select按钮直接用鼠标选网页上的元素,绿色代表可采集的数据,点击后为红色锁定状态
  3. Multiple按钮:代表本页中需要抓取多个元素
  4. Delay:填写500


    WechatIMG618.jpeg

③开始爬取数据 Scrap

WechatIMG619.jpeg

① 反爬虫当中的常见手段和应对方法

  1. 文件头user-agent检查:如果同一个user-agent请求过于频繁,会将其访问拒绝掉
  2. 动态加载(例如:Ajax):根据用户的操作去请求数据
  3. 用户行为(cookie+请求时间间隔):cookie秘钥失效之后,会需要重新登录
  4. 人机交互验证(例:图形验证码)

②如何确定要抓取的东西能够使用web scraper进行抓取

  1. 必须提供一个网址

  2. 在浏览器栏中访问这个页面,能够用眼睛看到

  3. 进阶用法

① 一页内抓取多字段(元素集)

操作方法:按照刚才第二个爬虫的方式,添加多个selector选择器

案例:58同城抓取房源信息https://bj.58.com/chuzu/?PGTID=0d100000-0000-17a9-c92b-9c6997da4d78&ClickID=2

{"_id":"tongchegn58","startUrl":["5858"],"selectors":[{"id":"house","type":"SelectorElement","parentSelectors":["_root"],"selector":"li.house-cell","multiple":true,"delay":0},{"id":"title","type":"SelectorText","parentSelectors":["house"],"selector":"a.strongbox","multiple":false,"regex":"","delay":0},{"id":"price","type":"SelectorText","parentSelectors":["house"],"selector":"div.money","multiple":false,"regex":"","delay":0},{"id":"address","type":"SelectorText","parentSelectors":["house"],"selector":"p.infor","multiple":true,"regex":"","delay":0}]}

②多页抓取

案例:抓取布棉老师知乎上的回答

第一页:https://www.zhihu.com/people/bumian/answers

第二页: https://www.zhihu.com/people/bumian/answers?page=2

第三页: https://www.zhihu.com/people/bumian/answers?page=3

第四页:https://www.zhihu.com/people/bumian/answers?page=4

....

第十三页:https://www.zhihu.com/people/bumian/answers?page=13

推导结论:第N页url:https://www.zhihu.com/people/bumian/answers?page=n

所以,我们只需要将Start URL修改为:https://www.zhihu.com/people/bumian/answers?page=[1-13]

[1-13]表示从第一页到十三页的每一页

[1-13:2],表示从第一页到第十三页,间隔为2的奇数页数据

③“不规律”分页

a. 下拉动态加载 - 下拉选择器

案例: 李笑来微博

ElementType: 下拉选择器(Element scroll down)

{"_id":"lixiaolai","startUrl":["https://weibo.com/bylixiaolai?refer_flag=1001030101_&ssl_rnd=1509760362.444&is_hot=1"],"selectors":[{"id":"item","type":"SelectorElementScroll","parentSelectors":["_root"],"selector":"div[nick-name]","multiple":true,"delay":0},{"id":"text","type":"SelectorText","parentSelectors":["item"],"selector":"_parent_","multiple":true,"regex":"","delay":0}]}

b. 点击“加载更多” -

案例:从IT橘子获取在线教育相关公司信息

ElementType:Element click

{"_id":"itjuzi001","startUrl":["https://www.itjuzi.com/search?data=%E5%9C%A8%E7%BA%BF%E6%95%99%E8%82%B2"],"selectors":[{"id":"company","type":"SelectorElementClick","parentSelectors":["_root"],"selector":".list-normal a","multiple":true,"delay":"100","clickElementSelector":".more span","clickType":"clickMore","discardInitialElements":"do-not-discard","clickElementUniquenessType":"uniqueCSSSelector"},{"id":"title","type":"SelectorText","parentSelectors":["company"],"selector":"h4","multiple":false,"regex":"","delay":0},{"id":"desc","type":"SelectorText","parentSelectors":["company"],"selector":"p","multiple":false,"regex":"","delay":0}]}
WechatIMG620.jpeg

提示:这个按钮会在⻚页⾯面最下⽅方,需要往下滑动⿏鼠标,才能看到按钮。点击选中后,⻚面会加载⼀一部分,这是正常现象。可以点击 “Select” 右侧的 “Element preview”,会看到 “加载更更多” 的按钮是被选中的

④采集二级、三级页面数据

案例:从IT橘子获取在线教育公司的详细信息

重点:如果想要抓取哪个页面,就先用Link(Element Type)选择器抓取它的url;然后在url指向的页面增加Link(Element Type)的子选择器,用来抓取新页面需要的信息

{"_id":"itjuzi002","startUrl":["https://www.itjuzi.com/search?data=%E5%9C%A8%E7%BA%BF%E6%95%99%E8%82%B2"],"selectors":[{"id":"company","type":"SelectorLink","parentSelectors":["_root"],"selector":".list-normal a","multiple":true,"delay":0},{"id":"compantName","type":"SelectorText","parentSelectors":["company"],"selector":"h1","multiple":false,"regex":"","delay":0},{"id":"homeId","type":"SelectorText","parentSelectors":["company"],"selector":"a.link-d","multiple":false,"regex":"","delay":0},{"id":"slogan","type":"SelectorText","parentSelectors":["company"],"selector":"h2.slogan","multiple":false,"regex":"","delay":0},{"id":"desc","type":"SelectorText","parentSelectors":["company"],"selector":"div.summary","multiple":false,"regex":"","delay":0}]}
上一篇下一篇

猜你喜欢

热点阅读