最近在开发一款开源云端爬虫采集框架工具(基于 PHP+C 实现)遇到的难坑,求填补! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
midysky
V2EX    分享创造

最近在开发一款开源云端爬虫采集框架工具(基于 PHP+C 实现)遇到的难坑,求填补!

  •  
  •   midysky 2016-07-18 21:34:25 +08:00 4732 次点击
    这是一个创建于 3440 天前的主题,其中的信息可能已经有所发展或是发生改变。

    参考产品:火车头采集器、发源地采集引擎、 import.io 。 基础功能主要参考火车头 www.locay.com ,功能不错很全,但是单机的,,。 import.io 是国外的产品,自动化方式采集 web ,网站 www.import.io 经常墙,找灵感的。发源地是上面说是国内首款云采集工具,用了两周很不错。确实是我想要学习的。 www.finndy.com 。做了个采集 V2EX 邮箱的示例: http://www.finndy.com/?robot-7535 各位有好的云采集的产品希望分享,一起研究。

    功能基本以火车头为主即可。云菜鸡以发源地的为主,特别是想做个规则市场,类似发源地那种。要是能够实现不写规则自动化智能识别采集最好。这是未来的方向。总结下来就是:火车头+发源地的模式。

    目前已完成 70%,等到下面几个问题解决后将开源。目前存在的几个主要问题是: 1 、云端执行的代理 IP 问题:(自己爬过滤 or 其它工具或 api or asdl ,哪个好?) 2 、大量数据 excel/csv 导出问题:(如果一次性从 mysql 类型数据库导出 100w+数据,怎么解决?内存处理,直接 dump 出来一般都卡死) 3 、自定义脚本沙盒怎么处理?(单独的一个 html 处理容器,让用户自己写脚本处理。目前用的 python ,服务器用 php 实现。有没有开源方案开源参考?主要是安全问题)

    求牛逼解决方案,优先开放 github 地址。

    第 1 条附言    2016-07-20 10:34:02 +08:00
    求实际应用案例,或开源代码。
    16 条回复    2016-07-20 17:46:08 +08:00
    Moker
        1
    Moker  
       2016-07-18 23:16:45 +08:00
    = =为什么觉得好像广告?
    Felldeadbird
        2
    Felldeadbird  
       2016-07-19 00:19:35 +08:00 via iPhone
    excel 好解决。分块导出再合并。
    Felldeadbird
        3
    Felldeadbird  
       2016-07-19 00:21:35 +08:00 via iPhone
    代理去网上买就行,一年就几百块,总比去爬别人免费提供的稳定多。
    第三方点没理解,看其他人咯
    Comdex
        4
    Comdex  
       2016-07-19 00:46:38 +08:00 via Android
    用 php 做大规模的爬虫采集感觉不靠谱
    midysky
        5
    midysky  
    OP
       2016-07-19 09:23:58 +08:00
    @Comdex 部分逻辑用 PHP ,底层 c++扩展,还有 python 。
    midysky
        6
    midysky  
    2016-07-19 09:30:32 +08:00
    @Felldeadbird 感谢. ip 网上买的很多。质量高的有测试过哪个好?
    第三点就是采集的数据丢到一个独立的服务器环境进行处理,比如一个完整的 html 全文,过去返回其中一个标签。

    重点是 mysql 导出问题。你说的分块具体是怎样的?效率怎样?
    midysky
        7
    midysky  
    OP
       2016-07-19 09:31:38 +08:00
    @Moker 像广告。那我把网址删除?
    rekulas
        8
    rekulas  
       2016-07-19 09:49:36 +08:00
    @midysky 爬虫部分不建议和 php 打交道,不然后面你填坑会累死的, dump 可能要自己写程序从 mysql 读取先载入到内存中,可以参考下 sphinx 源码,几千万数据也不会卡住
    Felldeadbird
        9
    Felldeadbird  
       2016-07-19 09:49:39 +08:00   1
    ip 库这个 其实网上 每家都差不多的。 几乎接口提取出来的 最新基本可用率有 60%左右。
    mysql 转 excel 这个你可以 分批取数据,先保存为多份小的 excel 文件。最后完全完成 再合并后给用户使用,就正常了。 这样就不需要一次性读取大量数据,占用大量内存和等待时间。
    第三点 你是把 采集到的内容 用文本之类的 形式保存,用户需要就调用给他们么?还是说用户写的 规则?
    如果是我的话,我会把数据都丢到数据库,数据库管理内容方便。反正先阶段过滤交给 数据库层,业务层不要使用 拼接 SQL ,读取基本不会有很大的注入问题的。
    midysky
        10
    midysky  
    OP
       2016-07-19 10:05:27 +08:00
    @Felldeadbird 1 、比如 mysql 导出 100w 结构化数据到 excel ,最好给个大概代码逻辑参考下? mysql 的 output 命令还是 sql 查询处理到内存?
    midysky
        11
    midysky  
    OP
       2016-07-19 10:35:36 +08:00
    @rekulas 嗯 php 主要用于逻辑方面。 dump 你说的具体是指 sphinx 的哪个地方? 100w 数据通常从 mysql 数据库到 excel 本地文件,具体什么样的逻辑?
    rekulas
        12
    rekulas  
       2016-07-19 12:11:15 +08:00
    @midysky 我认为是直接连接 mysql 然后 select 出来到内存就行了,至于到 excel 你只有自己生成, mysql 本身的工具处理大数据量可能是有些问题
    lecher
        13
    lecher  
       2016-07-19 13:38:34 +08:00 via Android
    代理买最省事,免费代理可用性太低。检测可用性的维护成本也很高。

    基于要解析 HTML 内容这个事情,不考虑用 nodejs 做解析么,异步加上 js 的支持,要省很多事。这样用户就可以只写 js ,很容易隔离。

    百万数据转移,一次取出来太耗内存,代码也处理不了那么快,切分一下,写个导出的任务队列,把任务切成多次写入,开个进程专门跑导出。
    midysky
        14
    midysky  
    OP
       2016-07-19 15:58:40 +08:00
    @lecher 代理这块普通透明代理是否适用于爬虫采集?还是必须要用匿名、高匿名的代理?

    淘宝支付宝后台导出 excel 数据时就是分两次处理的。第一步显示 UI 同步导出数据到文件,第二步将该文件链接作为下载对象进行导出下载。你说的切分是怎样的逻辑?
    lecher
        15
    lecher  
       2016-07-19 20:59:59 +08:00
    透明代理在有意分析的情况下可以检测出来使用了代理。实际情况上,是否使用代理并不是重点。容易被清洗的请求通常是 ip 黑名单,就是这个代理 ip 发出来的请求数量太多,加上服务端有意收集 ip 黑名单进行的清洗。

    如果只要代理池里面的 ip 没有太高的流量出去,问题都不大。

    切分就是 100w 的导出数据, 不要一次取出来,可以分成 100 次,每次 1w 的数据量进行解析之后写入文件的处理。
    你从淘宝看导出的前端业务像是两步,实际上, UI 显示同步数据进度的时候,它后台对应的是一套任务队列,拆成很多步的导出处理,最后导出的数据都保存到文件之后才会显示真实的下载地址。
    midysky
        16
    midysky  
    OP
       2016-07-20 17:46:08 +08:00
    @lecher 关于 100w 数据切分的代码思路大概是怎样的?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5066 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 08:34 PVG 16:34 LAX 00:34 JFK 03:34
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86