爬虫抓取网页数据(WebScraper有多么好爬,以及大致怎么用问题)
优采云 发布时间: 2022-02-09 07:17爬虫抓取网页数据(WebScraper有多么好爬,以及大致怎么用问题)
网上有很多关于用Python爬取网页内容的教程,但一般都需要写代码。没有相应基础的人,短时间内还是有入门门槛的。事实上,在大多数场景下,都可以使用 Web Scraper(一个 Chrome 插件)快速爬取到目标内容。重要的是不需要下载任何东西,基本不需要代码知识。
在开始之前,有必要简单了解几个问题。
一个。什么是爬行动物?
自动抓取目标 网站 内容的工具。
湾。爬虫有什么用?
提高数据采集的效率。任何人都不应该希望他们的手指不断重复复制和粘贴的动作。机械的东西应该交给工具。快速采集数据也是分析数据的基础。
C。爬虫的原理是什么?
要理解这一点,您需要了解人类浏览网络的原因。我们通过输入网址、关键字、点击链接等方式向目标计算机发送请求,然后将目标计算机的代码下载到本地,然后解析/渲染到你看到的页面中。这就是上线的过程。
爬虫所做的就是模拟这个过程,但它比人类移动得更快,并且可以自定义抓取的内容,然后将其存储在数据库中以供浏览或下载。搜索引擎的工作原理类似。
但爬虫只是工具。要让工具发挥作用,你必须让爬虫了解你想要什么。这就是我们要做的。毕竟,人类的脑电波不能直接流入计算机。也可以说,爬虫的本质就是寻找规律。
照片由 Lauren Mancke 在 Unsplash 上拍摄
以豆瓣电影Top250为例(很多人用这个练习,因为豆瓣网页是正规的),看看Web Scraper是多么容易爬,以及如何粗略的使用它。
1、在 Chrome 应用商店中搜索 Web Scraper,然后点击“添加扩展”即可在 Chrome 扩展栏中看到蜘蛛网图标。
(如果日常浏览器不是Chrome,强烈建议更换。Chrome和其他浏览器的区别就像谷歌和其他搜索引擎的区别一样)
2、打开要爬取的网页,比如豆瓣Top250的网址是/top250,然后同时按option+command+i进入开发者模式(如果你使用的是Windows,就是ctrl+ shift+i,不同浏览浏览器默认的快捷键可能不同),这时候可以看到网页弹出这样一个对话框,别怕,这只是当前的html网页(一种超文本标记语言,它创建了 Web 世界的砖块)。
只要按照步骤1添加Web Scraper扩展,就可以在箭头所指的位置看到Web Scraper,点击它,就是下图中的爬虫页面。
3、点击create new sitemap和create sitemap依次创建爬虫。填写sitemap名称就行了,只是为了自己识别,比如填写dbtop250(不要写汉字、空格、大写字母)。在start url中,我们通常会复制粘贴要爬取的网页的URL,但是为了让爬虫了解我们的意图,最好先观察一下网页的布局和URL。比如top250采用分页方式,250部电影分10页分布。25 页。
第一个页面的 URL 是 /top250
第二页以 /top250?start=25&filter= 开头
第三页是/top250?start=50&filter=
...
只有一个数字略有不同,我们的意图是抓取top250的电影数据,所以start url不能简单的粘贴/top250,而应该是/top250?start=[0-250:25]&filter=
启动后注意[]中的内容,表示每25个是一个网页,爬取10个网页。
最后点击创建站点地图,爬虫就搭建好了。
(也可以通过在URL中填写/top250来爬取,但是不能让Web Scraper明白我们要爬取的是top250所有页面的数据,只会爬取第一页的内容。)
4、爬虫搭建后的工作是重点。为了让 Web Scraper 理解意图,必须创建一个选择器并单击添加新选择器。
然后就会进入选择器编辑页面,其实就是简单点。它的原理是几乎所有用 HTML 编辑的网页都是由长度相同或相近的框(或容器)组成,每个容器中的布局和标签也相似。是统一的,从HTML代码就可以看出来。
因此,如果我们设置选择元素和顺序,爬虫可以根据设置自动模拟选择,也可以整齐的爬下数据。当你想爬取多个元素时(比如你想爬豆瓣top250,同时想爬排名、电影名、收视率、一句话影评),可以先选择容器,然后依次选择容器中的元素。
如图所示,
5、第四步只是为容器创建一个选择器。Web Scraper 仍然不明白我们要抓取什么。我们需要在容器中进一步选择我们想要的数据(电影排名、电影名称、评分、一句话影评)。
完成第四步保存选择后,会看到爬虫的根目录root,点击创建的容器栏。
当您看到根目录 root 后跟容器时,单击添加新选择器以创建子选择器。
再次进入选择器编辑页面,如下图,这次不同的是id里面填的是我们要抓取的元素的定义,随便写什么,比如先抓取电影排名,并写一个数字;因为排名是文本类型,所以选择Text in Type;这次只选择了容器中的一个元素,因此不勾选 Multiple。另外,在选择排名的时候,不要选错地方,因为随便选什么爬虫都可以爬。然后以相同的方式单击完成选择并保存选择器。
此时爬虫已经知道要爬取top250网页中所有容器的视频排名。同理,再创建3个子选择器(注意是在容器目录下),分别爬取电影名、评分、一句话影评。
这是创建后的样子。至此,所有的选择器都创建好了,爬虫已经完全理解了意图。
6、接下来就是让爬虫跑起来,点击sitemap dbtop250 依次抓取
这时候Web Scraper会让你填写请求间隔和延迟时间,保持默认2000(单位是毫秒,也就是2秒),除非网速非常快或者非常慢,然后点击开始刮擦。
到了这里,会弹出一个新的自动滚动网页,就是我们创建爬虫时输入的网址。大约一分钟左右,爬虫完成工作,弹窗自动消失(自动消失表示爬取完成)。
而Web Scraper页面会变成这样
7、点击刷新预览爬虫结果:豆瓣电影top250排名、电影名、评分、一句话影评。看看有没有问题。(比如有null,如果有null,说明对应的选择器没有选好。一般页面越规则,null越少。当遇到HTML不规则的网页时,比如知乎,有很多null,可以return调整选择器)
这时候可以说大功告成了,只要依次点击sitemap dbtop250和Export date as CSV,就可以下载CSV格式的数据表,然后随意使用。
值得一提的是,浏览器抓取的内容一般都存储在本地的starage数据库中,功能比较简单,不支持自动排序。所以如果你不安装额外的数据库并设置它,那么被爬取的数据表将是乱序的。在这种情况下,一种解决方案是将其导入谷歌表格然后清理它。另一种一劳永逸的解决方案是安装一个额外的数据库,比如CouchDB,在爬取数据之前将数据保存路径更改为CouchDB,然后依次爬取数据,预览和下载,比如上面的预览图。
整个过程看似麻烦,但熟悉之后其实很简单。这种小规模的数据,从头到尾两三分钟就可以了。而像这种少量的数据,爬虫并没有完全体现出它的用途。数据量越大,爬虫的优越性越明显。
比如爬取知乎的各个topic的选中内容,可以同时爬取,20000条数据只需要几十分钟。
自拍
如果你看到这个,你会觉得按照上面的步骤仍然很难。有一个更简单的方法:
通过Import sitemap,复制粘贴以下爬虫代码,导入,就可以直接开始抓取豆瓣top250的内容了。(由以上一系列配置生成)
{"_id":"douban_movie_top_250","startUrl":["/top250?start=0&filter="],"selectors":[{"id":"next_page","type":"SelectorLink","parentSelectors" :["_root","next_page"],"selector":".next a","multiple":true,"delay":0},{"id":"container","type":"SelectorElement" ,"parentSelectors":["_root","next_page"],"selector":".grid_view li","multiple":true,"delay":0},{"id":"title","type" :"SelectorText","parentSelectors":["container"],"selector":"span.title:nth-of-type(1)","multiple":false,"正则表达式":"","delay":0},{"id":"number","type":"SelectorText","parentSelectors":["container"],"selector":"em","multiple ":false,"正则表达式":"","延迟":0}]}
最后,这个文章只涉及到Web Scraper和爬虫的冰山一角。不同的网站有不同的样式,不同的元素布局,不同的爬取需求,不同的爬取方式。
比如有的网站需要点击“加载更多”才能加载更多,有的网站下拉加载,有的网页比较乱,有时还需要限制爬取次数(否则爬虫会一直不停的爬爬),有时需要抓取二级和多级页面的内容,有时需要抓取图片,有时需要抓取隐藏信息等等。有很多种情况。爬豆瓣top250只是入门体验版操作。只有了解爬虫的原理,遵守网站的规则,才能真正使用Web Scraper来爬取你想要的东西。
Hal Gatewood 在 Unsplash 上的标题图片
文章首发于公众号“行无术”,作者微博m644003222