All Projects → laixin86714802 → Spider Platform

laixin86714802 / Spider Platform

可视化爬虫自动采集平台

Programming Languages

javascript
184084 projects - #8 most used programming language

Labels

Projects that are alternatives of or similar to Spider Platform

Distributed Multi User Scrapy System With A Web Ui
Django based application that allows creating, deploying and running Scrapy spiders in a distributed manner
Stars: ✭ 88 (-26.05%)
Mutual labels:  scrapy
Hive
lots of spider (很多爬虫)
Stars: ✭ 110 (-7.56%)
Mutual labels:  scrapy
Maria Quiteria
Backend para coleta e disponibilização dos dados 📜
Stars: ✭ 115 (-3.36%)
Mutual labels:  scrapy
Proxy server crawler
an awesome public proxy server crawler based on scrapy framework
Stars: ✭ 94 (-21.01%)
Mutual labels:  scrapy
Scrapyd Cluster On Heroku
Set up free and scalable Scrapyd cluster for distributed web-crawling with just a few clicks. DEMO 👉
Stars: ✭ 106 (-10.92%)
Mutual labels:  scrapy
Programer log
最新动态在这里【我的程序员日志】
Stars: ✭ 112 (-5.88%)
Mutual labels:  scrapy
Email Extractor
The main functionality is to extract all the emails from one or several URLs - La funcionalidad principal es extraer todos los correos electrónicos de una o varias Url
Stars: ✭ 81 (-31.93%)
Mutual labels:  scrapy
Seleniumcrawler
An example using Selenium webdrivers for python and Scrapy framework to create a web scraper to crawl an ASP site
Stars: ✭ 117 (-1.68%)
Mutual labels:  scrapy
Crawler
爬虫, http代理, 模拟登陆!
Stars: ✭ 106 (-10.92%)
Mutual labels:  scrapy
Patentcrawler
scrapy专利爬虫(停止维护)
Stars: ✭ 114 (-4.2%)
Mutual labels:  scrapy
Experiments
Some research experiments
Stars: ✭ 95 (-20.17%)
Mutual labels:  scrapy
Decoration Design Crawler
土巴兔和谷居装修网站爬虫
Stars: ✭ 105 (-11.76%)
Mutual labels:  scrapy
Scrala
Unmaintained 🐳 ☕️ 🕷 Scala crawler(spider) framework, inspired by scrapy, created by @gaocegege
Stars: ✭ 113 (-5.04%)
Mutual labels:  scrapy
Scrapoxy
Scrapoxy hides your scraper behind a cloud. It starts a pool of proxies to send your requests. Now, you can crawl without thinking about blacklisting!
Stars: ✭ 1,322 (+1010.92%)
Mutual labels:  scrapy
Cnkispider
a spider for cnki patent content, just for study and commucation, no use for business.
Stars: ✭ 117 (-1.68%)
Mutual labels:  scrapy
Taiwan News Crawlers
Scrapy-based Crawlers for news of Taiwan
Stars: ✭ 83 (-30.25%)
Mutual labels:  scrapy
Wswp
Code for the second edition Web Scraping with Python book by Packt Publications
Stars: ✭ 112 (-5.88%)
Mutual labels:  scrapy
Docs
《数据采集从入门到放弃》源码。内容简介:爬虫介绍、就业情况、爬虫工程师面试题 ;HTTP协议介绍; Requests使用 ;解析器Xpath介绍; MongoDB与MySQL; 多线程爬虫; Scrapy介绍 ;Scrapy-redis介绍; 使用docker部署; 使用nomad管理docker集群; 使用EFK查询docker日志
Stars: ✭ 118 (-0.84%)
Mutual labels:  scrapy
Copybook
用爬虫爬取小说网站上所有小说,存储到数据库中,并用爬到的数据构建自己的小说网站
Stars: ✭ 117 (-1.68%)
Mutual labels:  scrapy
Weibo hot search
微博爬虫:每天定时爬取微博热搜榜的内容,留下互联网人的记忆。
Stars: ✭ 113 (-5.04%)
Mutual labels:  scrapy

懒得看的点这里, 直接到示例
任务管理
界面说明
新增任务
1.请求参数配置
配置名称
请求方式
入口url
请求参数
代理ip
动态解析
2.选择器配置
选择器界面
主界面
增、改

预览
字段选择器属性
字段使用条件
元素集选择器的存在意义
选择器树形图
下一步/保存选择器
查看/下载数据
读取配置
采集示例
<a class="wiz_toc h2" 多元素 "选择器=" " +=" " 翻页(1)"="">"多元素"选择器 + 翻页(1)
请求配置
参数配置
元素集选择器+翻页(2)+详情
参数配置
可能存在的问题
动态解析
网页页模板不同
选择器无法选中

懒得看的点这里, 直接到示例

采集示例

任务管理

界面说明

主界面:

该模块管理爬虫的运行状态, 可以暂停、停止和恢复爬虫的运行.

详情界面:

如图, 点击任务, 进入详情页, "爬虫统计"为scrapy爬虫框架的日志信息; "请求队列"为将要爬取的url; 上方有"暂停"、"恢复"和"停止"爬虫任务按钮.

主界面为管理爬虫任务状态的模块, 前后端实时同步, 前端实时接收爬虫任务日志, 后端实时响应爬虫任务状态的改变.

新增任务

配置request请求参数和入口url, 同为后续爬虫的请求参数.

1.请求参数配置

配置名称

任务ID的标识, 在数据查询时用来查找数据集合, 保存配置时用来选择请求参数和字段选择器, 唯一值, 不可重复, 不能为config字符串.

请求方式

本平台选常用的两种请求, post和get.

入口url

爬取页面的入口页面, 选择采集参数和后续页面会在该页面进行扩展

请求参数

请求参数分为三种: 1.请求头header参数 爬虫常用的header参数有

Header 解释 示例
Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/html
Accept-Charset 浏览器可以接受的字符编码集。 Accept-Charset: iso-8859-5
Accept-Encoding 指定浏览器可以支持的web服务器返回内容压缩编码类型。 Accept-Encoding: compress, gzip
Accept-Language 浏览器可接受的语言 Accept-Language: en,zh
Accept-Ranges 可以请求网页实体的一个或者多个子范围字段 Accept-Ranges: bytes
Content-Length 请求的内容长度 Content-Length: 348
Content-Type 请求的与实体对应的MIME信息 Content-Type: application/x-www-form-urlencoded
Date 请求发送的日期和时间 Date: Tue, 15 Nov 2010 08:12:31 GMT
Proxy-Authorization 连接到代理的授权证书 Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Referer 先前网页的地址,当前请求网页紧随其后,即来路 Referer: https://www.baidu.com/
User-Agent User-Agent的内容包含发出请求的用户信息 User-Agent: Mozilla/5.0 (Linux; X11)

2.cookie参数 有些网站需要验证cookie参数

3.form-data参数 选择post请求时, 提交的参数信息

如图为header参数

代理ip

针对防爬虫网站设计, 动态代理ip, 有效时间2018-05-10 14:44:00

动态解析

越来越多的网站选用js渲染页面, 针对非模板页面加载网站

示例url: http://shop.99114.com/47907188/ch6

静态爬虫获取页面内容:

动态爬虫获取页面内容:

动态爬虫实际获取页面内容:

在动态爬虫获取页面的前端展现上, 已竭力实现实际获取内容, 但仍不可避免造成爬取内容和展现内容不符.

2.选择器配置

选择器配置界面分为两部分, 上方的采集页面和下方的选择器页面. 上方的采集页面为请求配置完成后点击"下一步"所呈现出的页面内容. 下方的选择器界面为选择将要采集的数据.

选择器界面

主界面

提供字段选择器的层级显示、增、删、改、查、预览功能

增、改

添加/修改字段选择器, 共有7中类型的字段选择器字段选择器属性

显示选择器选择在页面中选择的位置

预览

显示选择器匹配的数据

选择器用来选定采集数据的位置和内容, 该界面可以用鼠标点击配置将要采集的数据, 查看采集数据的位置, 预览采集数据的内容, 根据采集数据不同, 将字段选择器分为以下7类.

字段选择器属性

字段选择器 名称 多元素属性(multiple) 可选子元素 该类型页面唯一 可查看选择器 可预览数据 是否采集
SelectorDetail 详情页选择器
SelectorElement 元素集选择器
SelectorElementAttribute 元素属性选择器
SelectorHTML html选择器
SelectorImage 图片选择器
SelectorLink 翻页选择器
SelectorText 文本选择器

字段使用条件

1.避免同级别multiple、非multiple属性的选择器并存

所有采集的字段(SelectorElementAttribute、SelectorHTML、SelectorImage、SelectorText)有字段选中"多元素属性"时, 不可选择其他采集的字段, 会造成两个字段集合维度混乱("多元素属性"的字段多对一非列表属性字段), 后端维度无法对应的字段值统一处理为空字符串.

如果有"多元素属性", 该父类下所有采集的字段选择器尽量全都是"多元素属性"; 如果没有"多元素属性", 该父类下所有采集的字段选择器尽量都没有"多元素属性". 如图:标题、内容为可采集字段, 他们的多元素属性必须一致. 不一致时示例

2.翻页选择器只能在入口页面设置且唯一

SelectorLink(翻页选择器)在入口页面下只能存在一个. SelectorLink是递归采集函数. 存在多个时导致系统效率降低, 稳健性下降.

3.元素集选择器下可采集的字段多元素属性以元素集选择器为准

SelectorElement(元素集选择器)的子类采集选择器(SelectorElementAttribute、SelectorHTML、SelectorImage、SelectorText)选择multiple(多元素属性)时, 会将子类数据集升维, 数据解析错误.

[详细解释见元素集选择器的存在意义] 如图:元素集下所有的可采集字段(红圈中)的multiple(多元素属性)以元素集是否选择multiple(多元素属性)为准.

前端表单按照字段选择器名称生成模板, 暂时未判断父类属性; 后端元素SelectorElement(元素集选择器)的子类采集选择器采集时将不会判断multiple(多元素属性).统一按照父类SelectorElement(元素集选择器)是否选择multiple(多元素属性)判断.

4.详情页选择只能有一条链式选择器

前端采集页面在iframe标签内, 详情页选择后无法返回, 同级别选择器只能存在一个, 不同层次的选择器存在详情页选择器则他们必在同一条链式选择器上. 后端采集框架scrapy为异步回调, 选择器解析为链式回调, 同级别存在多个详情页选择器会导致数据混淆、丢失. 如图:"详情", "联系"为两个详情选择器, 在同一条链式选择器上

元素集选择器的存在意义

采集到所需的数据由两个因素决定:html文本和选择器, 其中html文本为页面中内容所在的html块, 选择器为指定采集的字段内容.

在使用到元素集选择器的大多数情况下html块多为列表形式存在, 选择器有多个.

不使用元素集选择器时 多个选择器按照"多元素"属性选择采集的数据, 页面本身可能存在内容块数据缺失, 造成多个选择器选择的数据列无法一一对应, 造成数据混淆、错位

示例:

"多元素属性"选择器优先遍历css选择器

新建两个"多元素属性"选择器, 第一个采集"name"字段, 第二个采集"href"字段, 当页面本身存在数据缺失时, 会使"name"和"href"数据无法一一对应."name_2" => "href_3" 导致数据错位.

使用元素集选择器时

元素集选择器优先遍历内容块, 然后遍历css选择器, 使得数据维度得到统一, 缺失值也不会影响结果值

元素集选择器优先遍历内容块, "多元素属性"的选择器会优先遍历选择器, 两个开始采集维度的不同, 会导致不同的结果.当采集字段中存在多个"多元素属性"的选择器且他们具有同一个父元素, 优先考虑将这些选择器置于元素集选择器中.

选择器树形图

显示各个层级的选择器关系

下一步/保存选择器

开始或者保存任务

查看/下载数据

查看数据和下载已采集数据的页面

读取配置

开始或删除任务

采集示例

"多元素"选择器 + 翻页(1)

http://www.51sole.com/s.aspx?q=PVC通风管

请求配置

参数配置

1.填写字段名称商品名称(唯一), 如果重复, 选择器保存失败 2.选择 选择器类型 3."点击选择"按钮开启选择器 4-5.分别点击同一列表中同一采集内容(自动匹配通用选择器, 无法匹配时会提示; 如采集单个选择, 只用点击选择器一次即可) 6.点击确定按钮获取"css选择器"内容, 确定左侧"键盘事件"共绑定了一个按键, S键: 当前选择器, P键: 当前选择元素的父元素, C键: 当前选择元素的子元素 7.选择"多元素属性" 8.保存选择器

同上, 采集公司url字段

点击下一页, 选择翻页选择器

整体如下: 主页面选择器: 选择器层级: 点击下一步 开始任务 启动任务, 然后再主界面进行任务管理或者查看数据里下载数据

元素集选择器+翻页(2)+详情

https://zhongshan.china.cn/search/fisnfv.shtml

参数配置

1.选择元素集选择器

2.配置翻页选择器(翻页选择器分两种, 点击选择和手动配置, 优先使用手动配置, 选择器有全局表单验证, 改起来太麻烦, 使用手动配置时, 随便填个值), 手动配置时, 翻页url中变动的参数 使用%s代替.

3.进入元素集选择器内, 新建产品名称, 所在地公司名称选择器(在元素集选择器中, 默认以第一个元素集为模板, 其他范围内点击选择按钮无法生效) 注意:在元素集选择器中不要选择"多元素"属性, 元素集选择器中的子选择器, 维度以元素集选择器为准.

4.配置详情选择器, 选择将要进入的标签, 保存

5.进入详情选择器, 在页面中点击详情链接

6.进入详情页之后, 再配置一个详情选择器进入联系页

7.在联系页中, 选择联系人 电话 地址字段采集器

8.打开选择器树形图查看选择器层级

8.下一步开始任务, 注意请求间隔, 太快容易被封

被封

9.查看/下载数据

可能存在的问题

动态解析

动态解析网页太慢, 资源占用过高, 显示内容和爬取内容不同, 造成显示内容和爬取内容不同主要因为网站自带js的运行导致的, 如果取消爬取网站自带js, 可能会造成依赖css无法加载, 前端展示效果极差和网页布局和渲染效果缺失, 留待以后解决.

网页页模板不同

http://kungeina0315.51sole.com/companycontact.htm http://jing18028106510.51sole.com/companycontact.htm

场景:两个详情页模板, 由于字段个数不同, 使用css选择器时, 对不同的模板选择字段, 会造成字段缺失或者错位的情况。 这两个页面中, 由于第二个页面多了"传真"和"微信"这两个字段, 导致相同的css选择器在匹配第一个页面的同时, 匹配第二个页面时"传真"字段之后的css选择器选择的字段值错位.

处理:使用css选择器选择整个内容块, 然后使用正则表达式提取采集的内容

如图所示: 采集"手机"字段, 选择整个内容块, 然后使用正则表达式提取.

选择器无法选中

点击选择按钮很难选中元素时, 可以先选择他的父元素或子元素, 然后使用键盘按钮C或P调整. 点击选择没有反应, 本平台将采集网页放在本域名内, 跨域导致有些资源加载异常, 使得采集脚本无法加载, 此时只能手动填写css选择器.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].