不用写代码的爬虫----web scraper介绍
本文主要摘自官方文档
1.可以指定多个网址。如果是规律的。例如:
http://example.com/page/1
http://example.com/page/2
http://example.com/page/3
那我的网址就可以这么写 http://example.com/page/[1-3]
指定网址如果他的网址页面不是以1递增的,比如pg/1 pg/11 pg/21 那么我们可以这样写 pg/[1-21:10] 可以认为前面的1是默认的,所以可以不写
2.如何爬取二级页面(详情页面)
设置完前面的网页,建立sitemap之后,我们建立一个link selector(链接选择器)。然后再建立子选择器。一般是text(文本)。需要注意的是,我们需要在当前页面进入详情页。一句话解释:链接选择器就是告诉插件点击哪里,子选择器告诉插件我要找什么数据。另外,三种核心选择器是link selector ,element selector, text selector.
3.当选择器建立完成之后,切换到sitemap your_sitemap.可以看到下拉框有scrape按钮,点击即可开始爬取。这时,插件会自动打开你指定的网址,抓完数据后浏览器会关闭。这时会显示:no data scraped yet. refresh.点击refresh,数据就出来了。如果这时还没有,可能要回去检查一下sitemap,哪里弄错了
4.选择器:选择器大致可以分为三种----数据抽取、链接选择器(link)、元素选择器
数据抽取选择器只是简单的返回从选择的元素找到的数据。
链接选择器从链接提取网址,稍后打开提取数据。举个例子,如果一个sitemap tree有一个链接选择器,后面跟着三个子文本选择器。那么web scraper就会打开链接选择器指定的网址,然后抽取3个文本选择器所指定的数据。当然,链接选择器后面也可以跟链接选择器,这样就实现了三级、四级等页面数据提取(级数越多会越慢)
元素选择器包含多种数据元素。例如,元素选择器可以在电商网站上选择一系列项目。(对HTML熟悉的可以认为他是包含很多子标签的标签,如div).
选择器选项(重要)parent selectors:确认当下建立的选择器的父选择器。 multiple:很重要的选项。举个例子,我现在想爬一下淘宝某个店铺所有产品的名字、价格、销量。那么我先建立一个父选择器,element selector,此时我需要勾选mutiple.然后建立三个子文本选择器。注意这时千万不要勾选multiple.不然同一个产品的名字、价格、销量不在一行
4.1 文本选择器
html标签会剥离,只有文本会返回。文本选择器会忽略<script>,<style>标签中的文本。
正则:我们可以使用正则表达式对选择器获取的文本做进一步提取
举几个例子:1)提取评论----评论有好几条,这时应该勾选multiple.2)提取多项目多文本。这个比较常用。需用元素选择器作为文本选择器的父选择器。3)一个项目多个不同文本。和1不同的是这里文本选择器是不同的。
4.2 链接选择器
如果使用链接选择器而没有任何子选择器,那么就会提取链接和相应的网址。
注意:web scraper仅能在<a>标签href属性时工作。如果不生效执行下面的动作
1)点击链接,看地址栏有无变化。如果没有可能用的是ajax加载数据。这时我们可以用element click selector
2) 如果网站打开弹出式窗口那么就应该用link popup selector
3)网站可能使用js window.location来改变网址,这个目前无法处理
4.3 Sitemap.xml link selector(暂不清楚)
4.4 弹出链接选择器
用法和链接选择器类似,当点击链接打开新的窗口而不是在同一个选项卡打开 或者在新选项卡打开,这时就要用到。
4.5 图像选择器
图形选择器返回的是图像地址。之前有下载图形选项,现在我们可以用image download script
先下载python,再https://github.com/webscraperio/image-downloader下载py文件,最后把包含图片链接的CSV文件放在py文件上面。
4.6 表格选择器
4.7 元素属性选择器
从html 元素中提取属性值,<a href="#" title="my title">link<a>. 比如提取my title
4.8 html选择器
4.9 grouped selector
数据会存储成json格式。
4.10 元素选择器
元素选择器包含多种数据元素,元素选择器可以在电商网站上选择一系列项目。
4.11 元素滚动选择器
用于某些单页显示的网页,向下滑动加载数据。然而在淘宝测试效果不佳。
最后附上一段sitemap文件,json格式的。直接导入可用。
{"_id":"qiqixiong","startUrl":["https://ciciibear.tmall.com/category.htm?search=y&orderType=newOn_desc&pageNo=[1-20]#anchor"],"selectors":[{"id":"cloth2","type":"SelectorElement","parentSelectors":["_root"],"selector":"dl.item","multiple":true,"delay":0},{"id":"jump","type":"SelectorLink","parentSelectors":["cloth2"],"selector":"a.item-name","multiple":false,"delay":0},{"id":"title","type":"SelectorText","parentSelectors":["jump"],"selector":".tb-detail-hd h1","multiple":false,"regex":"","delay":0},{"id":"price","type":"SelectorText","parentSelectors":["jump"],"selector":".tm-promo-price span","multiple":false,"regex":"","delay":0},{"id":"sold","type":"SelectorText","parentSelectors":["jump"],"selector":".tm-ind-sellCount span.tm-count","multiple":false,"regex":"","delay":0}]}