精华内容
下载资源
问答
  • 大数据爬虫服务平台.pptx
  • 主要介绍了Java 爬虫服务器被屏蔽的解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 网络爬虫-distil networks反爬虫服务

    万次阅读 2018-08-22 18:24:42
    抓过大量数据的童鞋应该...一个是旋转图片,一个是播报语音,想想都难受,误伤率以及体验感都会很差,但是既然买了这个服务的公司,肯定也是数据十分珍贵吧,否则也不会冒着丢失客户的风险去搞这么个反爬虫服务。...

    抓过大量数据的童鞋应该遇见过万恶的distil networks。
    这里写图片描述

    划重点,该公司的反爬服务是真的“牛逼”!

    这里写图片描述
    这里写图片描述

    验证码是这样的 –>

    这里写图片描述
    这里写图片描述

    一个是旋转图片,一个是播报语音,想想都难受,误伤率以及体验感都会很差,但是既然买了这个服务的公司,肯定也是数据十分珍贵吧,否则也不会冒着丢失客户的风险去搞这么个反爬虫服务。

    展开全文
  • 通过设计一种高效的网络爬虫和相关组件实现数据的高效采集,存储和监控
  • 最近在学习scrapy,发现scrapy简单易学而且稳定高效,想架设了爬虫服务器供其他同事使用,发现scrapyd提供了很好的web接口,稍加改动就可以远程管理爬虫,下达爬虫 任务,监测爬虫状态。很是方便,便拿来研究: 1....

    最近在学习scrapy,发现scrapy简单易学而且稳定高效,想架设了爬虫服务器供其他同事使用,发现scrapyd提供了很好的web接口,稍加改动就可以远程管理爬虫,下达爬虫 任务,监测爬虫状态。很是方便,便拿来研究:

    1.scrapyd安装:

    使用pip安装

    pip install scrapyd

    2.启动scrapyd:

    cd c:\Python27\Scripts
    python scrapyd

    如图
    windows 7 使用 scrapyd 监控 scrapy的 spider

    3.部署工程:

    切换 到 工程目录,编辑 scrapy.cfg,把 #url = :6800/ 前面的 #号去掉。
    编辑deploy相关信息,由于本人在服务端本地使用,所以目标地址为localhost,scrapy.cfg内容如下:

    安装scrapyd-client :pip install scrapyd-client  
    将scrapyd-deploy文件放到工程目录下,并运行,如下图

    说明已scrapyd-deploy已发现工程
    这时只要部署工程到scrapyd服务端就行,该目录下运行:python scrapyd-deploy
    返回信息如下:

    部署成功。

    4.远程启动爬虫:

    远程启动爬虫需要给http://localhost:6800/schedule.json地址POST工程名称和爬虫名称
    新建scrapyd-test.py文件,内容如下:
    
    
    执行该文件:
    
    
    说明爬虫已启动。
    去页面查看下爬虫状态:
    
    
    已经结束了,log里有详细日志,items为爬到的内容。
    也可以去items目录下查看历史信息
    基本的功能都有了。

    5.详细使用API(scrapyd官方文档):

    http://scrapyd.readthedocs.org/en/latest/api.html
    
    展开全文
  • 请问,有没有支持高并发的爬虫服务器。。。。 目前想实现支持一个高并发的爬虫。。
  • 接上一篇,本人是java,但是为了项目 研究了一段时间的nodejs和puppeteer,就是用http服务提供爬虫服务,这个爬虫服务调用的是puppeteer,有验证码的可以调用验证码服务然后继续执行! 话不多说 直接上代码更加清晰(无数...

    接上一篇,本人是java,但是为了项目 研究了一段时间的nodejs和puppeteer,就是用http服务提供爬虫服务,这个爬虫服务调用的是puppeteer,有验证码的可以调用验证码服务然后继续执行!

    话不多说 直接上代码更加清晰(无数的踩坑脱坑):

    //引入包
    const express = require('express');
    const puppeteer = require('puppeteer');
    const bodyParser = require('body-parser');
    const assert = require('assert');
    const request = require("request-promise");
    
    const app = express();
    
    app.use(bodyParser.urlencoded({extended: true}));
    app.use(bodyParser.json());
    
    const port = process.env.PORT || 8080; // set HTTP server port
    
    //=====图形验证相关start=====
    
    async function getResourceContent(page, url) {
        const {content, base64Encoded} = await page._client.send(
            'Page.getResourceContent',
            {frameId: String(page.mainFrame()._id), url},
        );
        assert.equal(base64Encoded, true);
        return content;
    };
    
    //请求校验验证码
    function post(options) {
        return new Promise((resolve, reject) => {
            request.post(options, function (err, response, body) {
                // console.log('返回结果:');
                if (!err && response.statusCode == 200) {
                    if (body !== 'null') {
                        results = body;
                        resolve(results);
                    }
                }
            });
        }).catch(new Function()).then();
    }
    
    //=====图形验证相关end=======
    // REQUEST FOR OUR API
    // =============================================================================
    const router = express.Router(); // get an instance of the express Router
    router.route('/login').get((req, res) => {
        (async () => {
    
            // 代理隧道验证信息
            const proxyUrl = 'http://example:9020';
            const username = '123123123';
            const password = '123123123';
            const browser = await puppeteer.launch({
                ignoreHTTPSErrors: true,
                headless: false,
                args: ['--no-sandbox', '--disable-setuid-sandbox', `--proxy-server=${proxyUrl}`],
            });
    
            const page = await browser.newPage();
            await page.setJavaScriptEnabled(true);
            try {
                await page.authenticate({username, password});
                //Alipay
                await page.goto('https://accounts.alipay.com/console/querypwd/logonIdInputReset.htm?site=1&page_type=fullpage&scene_code=resetQueryPwd');
                await page.waitForSelector('#J-findPwdForm > div:nth-child(3) > img');
                const url = await page.$eval('#J-findPwdForm > div:nth-child(3) > img', i => i.src);
                const content = await getResourceContent(page, url);
                // console.log(content);
                var options = {
                    url: 'http://example/api',//req.query
                    // headers:{
                    //     device:"asdfasdfaadfasdf"
                    // },//req.headers
                    form: {
                        img: content,
                        isPath: "0",
                    }  //req.body
                };
                let result = await post(options);
                // console.log(result);
                // res.json({message: result});
                //终于可以写正式的操作了
                //get参数传过来的手机号
                let mobile = await req.query.mobile;
                await page.click('#J-accName');//点击输入框
                await page.type('#J-accName', mobile, {delay: 200});//延时操作 模拟更真
                await page.click('#J-checkcode');
                await page.type('#J-checkcode', result.toString(), {delay: 200});
                await page.click('#J-findPwdForm > div.ui-form-item.ui-form-item-last > div > input');
                // console.log("走到这模拟操作")
                //happiness=====
                await delay(1000);//等待
                let message = await page
                    .evaluate(() => document.querySelector("#J-findPwdForm > div.ui-form-item.ui-form-item-error > div").textContent);//获取js渲染生成的内容
                
                let pagebody = await page.content();//获取页面源码
                // console.log(pagebody);
                // console.log(message);
                await page.deleteCookie();
                //最后一步管浏览器啊啊啊啊
                await page.close();//关标签页
                await browser.close();//关浏览器
                res.send({
                    message: message,
                    document: pagebody
                });
            } catch (e) {
                await page.deleteCookie();
                await browser.close();
                res.send({
                    message: "请求异常,请检查",
                    document: "请求异常,无内容"
                });
                console.log(e);
            }
    
        })();
        // res.json({message: 'hi, Not yet!!'});
    });
    
    //POST请求示例 先注释掉
    // router.post('/submit', (req, res) => {
    //     (async () => {
    //         await page.type('#username', req.body.loginName);
    //         await page.type('#password', req.body.loginPwd);
    //         await page.type('#vcode', req.body.loginCode);
    //         await delay(1000);
    //
    //         var result = await page.evaluate(() => document.querySelector(".bootbox-body"));
    //         if (result == null) {
    //             res.send({
    //                 status: 'success'
    //             });
    //             await page.click('#loginBtn1');
    //         }
    //     })();
    //
    // });
    //POST请求注释完毕==
    
    function delay(timeout) {
        return new Promise((resolve) => {
            setTimeout(resolve, timeout);
        });
    }
    
    // test route to make sure everything is working (accessed at GET
    // http://localhost:8080/api)
    router.get('/', (req, res) => {
        console.log("hi, welcome to  http服务!");
        res.json({message: 'hi, welcome to  http服务!'});
    });
    
    // more roues for our API will happen here
    
    // REGISTER OUR ROUTES ---------------------------------------------------------
    // all of our routes will be prefixed with /api
    app.use('/api', router);
    
    // START THE SERVER
    // =============================================================================
    app.listen(port);
    console.log(`Magic happens on port ${port}`);
    

    这是对支付宝忘记密码接口的测试,只是随便一个测试 什么网站都可以 例如保存到 test.js 执行 node test.js即可 

    访问 http://localhost:8080/api 会显示 hi,welcome to http服务

    访问 http://localhost:8080/api/login?mobile=13888888888 就会完成一次完整的访问 当然 代码中的破解验证码服务是需要你自己搭建的

    本人用的IDE是WebStorm 可以debug 比较方便 研究不多 如有错误还请见谅 

    有问题一起讨论 代码应该很清楚了 必须多多累赘 部署启动在上篇已经写了!~

    展开全文
  • 爬虫服务器环境部署

    千次阅读 2016-07-21 15:53:44
    安装python 首先要升级python版本到2.7.12 1.下载安装包 wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tar.xz xz -d Python-2.7.12.tar.xz ...tar -xvf Python-2.7.12.tar.xz ..../configu

     安装python

    首先要升级python版本到2.7.12

    1.下载安装包

    wget  https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tar.xz

    xz -d  Python-2.7.12.tar.xz

    tar -xvf Python-2.7.12.tar.xz

    cd Python-2.7.12

    ./configure

    make

    make install

    2.备份老python,建立软链接

    mv /usr/bin/python /usr/bin/python2.7.5

    ln -s /usr/local/bin/python2.7 /usr/bin/python

     

    3.升级python以后yum的使用可能会受到影响,需要进行一下设置

    vi /usr/libexec/urlgrabber-ext-down

    vi /usr/bin/yum  

    找到第一行#!/usr/bin/python 改为 #!/usr/bin/python2.7.5

     

    安装 scrapy

    1.首先准备环境
    yum install gcc libffi-devel openssl-devel libxml2 libxslt-devel libxml2-devel python-devel -y

     

    2.安装easy_install
    yum install python-setuptools

     

    3.安装pip
    easy_install pip

     

    4.安装 lxml
    easy_install lxml

     

    5.安装scrapy
    pip install scrapy

     

    安装selenium

    pip install -U selenium

     

     安装 fontconfig

    yum install fontconfig

    展开全文
  • 安装成功,然后在运行爬虫:python3 spider.py 库文件问题已经变了 当然用pymysql更简单一些,用pip3可以直接安装成功 4.可以看到现在是缺少requests扩展,安装: pip3 install requests 安装pyquery ...
  • java简易爬虫Crawler

    万次阅读 多人点赞 2017-07-11 14:24:56
    小型简易爬虫源码(java版) 一,介绍:  >这是我的第一个爬虫,比较简单,没有队列,广度优先算法等,用list集合代替了队列。  >而且只爬取一个网址上面的图片,并不是将网址中的链接加入队列,然后下载一个...
  • Python爬虫入门教程 99-100 Python爬虫在线服务大全

    万次阅读 多人点赞 2020-10-27 20:38:13
    python爬虫不能一味的蛮干,有时候借助第三方提供的工具或者服务,快速达成爬取目标,不失为一种奇妙的解决技巧。
  • Selenium爬虫服务器 Selenium服务器运行的爬虫
  • 现在市面上其实也出现了非常多的爬虫服务,如果你仅仅是想爬取一些简单的数据的话,或者懒得写代码的话,其实利用这些工具还是可以非常方便地完成爬取的,那么本文就来总结一下一些比较实用的爬取服务和工具,希望在...
  • python爬虫代理服务器的使用
  • 服务器爬虫示例

    2013-11-05 14:45:58
    这是我曾经的一个服务器爬虫项目,里面的东西很全面,也很好,有需求的可以看下,仅供参考
  • 爬虫

    千次阅读 2020-03-25 13:18:56
    文章目录爬虫第一讲一、爬虫定义二、爬虫分类三、HTTP协议和HTTPs协议四、爬虫的一般流程五、响应状态码 爬虫第一讲 一、爬虫定义 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟客户端发送网络请求,接收请求...
  • 转载自公众号:FightingCoder 在之前介绍过很多爬虫库...现在市面上其实也出现了非常多的爬虫服务,如果你仅仅是想爬取一些简单的数据的话,或者懒得写代码的话,其实利用这些工具还是可以非常方便地完成爬取的,那...
  • 爬虫与反爬虫

    万次阅读 2018-01-29 12:57:52
    爬虫爬虫运行现状 真实世界的爬虫比例 哭笑不得的决策思路 爬虫爬虫技术现状 为python平反 无法绕开的误伤率 前端工程师的逆袭 误伤,还是误伤 爬虫爬虫套路...
  • Java 多线程爬虫及分布式爬虫架构探索

    千次阅读 多人点赞 2019-10-16 09:25:02
    这是 Java 爬虫系列博文的第五篇,在上一篇 Java 爬虫服务器被屏蔽,不要慌,咱们换一台服务器 中,我们简单的聊反爬虫策略和反反爬虫方法,主要针对的是 IP 被封及其对应办法。前面几篇文章我们把爬虫相关的基本...
  • 很多场景下应该都有这样的需求...这时候就需要构建一个可扩展的爬虫服务,在没有任务的时候等待任务到来,一旦有任务到达就可以立即响应,并且在吞吐量要求很高时可以方便地横向扩展,避免遇到带宽、网络延迟等瓶颈。这
  • 在公司做分布式深网爬虫,搭建了一套稳定的代理池服务,为上千个爬虫提供有效的代理,保证各个爬虫拿到的都是对应网站有效的代理IP,从而保证爬虫快速稳定的运行,当然在公司做的东西不能开源出来。不过呢,闲暇时间...
  • 用代理服务器加速爬虫速率

    万次阅读 2016-05-18 09:58:07
    通过代理服务器加速爬虫速率
  • 一、爬虫前导知识 1.端口 1、打开命令窗口,输入命令:netstat -ano 查找所有运行的端口 2、查看被占用端口对应的 PID 输入命令:netstat -aon|findstr “3306” 回车执行该命令,最后一位数字就是 PID, 这里是 1968...
  • 服务器反爬虫攻略

    2016-02-17 09:59:50
    上次服务器突然瘫痪了,我花了一整夜的时间查看日志,分析apache的访问日志,发现同一个时间段(大概下午3点左右)有好几个爬虫的访问痕迹 (百度、google、搜狗、雅虎、搜搜、还有一个不知名的爬虫),他们一起来...
  • CSDN爬虫 远程服务器MySQL存储 数据可视化
  • 网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。本...
  • 中国知网爬虫

    万次阅读 多人点赞 2019-11-21 14:51:25
    中国知网爬虫 一、知网介绍 提起中国知网,如果你曾经写过论文,那么基本上都会与中国知网打交道,因为写一篇论文必然面临着各种查重,当然翟博士除外。但是,本次重点不在于写论文跟查重上,而在于我们要爬取知...
  • 爬虫检测方法总结

    千次阅读 2019-07-27 11:42:26
    背景 近期由于工作上的需求,研究了一下反爬虫的工作。...反爬虫一般存在于两个环节,一种是traffic层面,在爬虫访问到服务器之前进行识别、区分,减轻服务器的压力,一般CDN提供商会有相关的反爬虫服务可以购...
  • 爬虫用代理服务器

    千次阅读 2019-04-25 23:08:48
    用代理服务器访问目的服务器时,目的服务器找不到你,只能找到代理服务器,你可以适当为所欲为,嗯,适当。。。 import requests # 根据协议类型,选择不同的代理 proxies = { ...response = requests.request('get',...
  • python爬虫

    万次阅读 2018-02-07 00:59:16
    #python网络爬虫 #通用网络爬虫(没有目的,爬去所有的URL) 聚焦网络爬虫(过滤无关的链接)#python数据分析与挖掘实战的正则表达式 #正则表达式 世界上信息非常多,而我们关注的信息有限。假如我们希望只提取出...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 111,429
精华内容 44,571
关键字:

爬虫服务

爬虫 订阅