更多>>关于我们

西安鲲之鹏网络信息技术有限公司从2010年开始专注于Web(网站)数据抓取领域。致力于为广大中国客户提供准确、快捷的数据采集相关服务。我们采用分布式系统架构,日采集网页数千万。我们拥有海量稳定高匿HTTP代理IP地址池,可以有效获取互联网任何公开可见信息。

您只需告诉我们您想抓取的网站是什么,您感兴趣的字段有哪些,你需要的数据是哪种格式,我们将为您做所有的工作,最后把数据(或程序)交付给你。

数据的格式可以是CSV、JSON、XML、ACCESS、SQLITE、MSSQL、MYSQL等等。

更多>>官方微博

西安鲲之鹏
陕西 西安

加关注

  • 【经验分享】关于彻底关闭Nox模拟器虚拟机
    背景: 命令行关闭Nox虚拟机可以使用"NoxConsole.exe quit <-name:nox_name | -index:nox_index>", 但是有时候会失败。
    这里采用一种保险的思路,先调用"NoxConsole.exe quit"进行安全关闭,若干秒后检测虚拟机对应虚拟机的Nox.exe进程(考虑到多开的情况,根据"-clone:"参数判断是否属于当前虚拟机实例)和NoxVMHandle.exe进程(考虑到多开的情况,根据"--comment"参数判断是否属于当前虚拟机实例)是否还存在,如果存在就强制终止这两个进程,达到彻底关闭的目的。

    完整实现如下图所示。
    发布时间:2021-11-02 10:16:20
  • 【经验分享】如何计算阿里系Ajax请求中的sign签名?
    有过阿里系采集经验的开发者都应该知道,淘宝(天猫)H5版、1688、淘宝司法拍卖H5版等阿里系网站,在Ajax请求中都会有一个sign签名参数(如下图1、2、3所示),要是值不正确将无法获取到有效的数据(例如返回“非法请求”提示)。如果我们无法构造出有效的sign,就只能通过“模拟浏览器操作”的方式来绕过签名验证,再结合"mitmproxy动态抓包脚本"来提取返回数据,这种方案效率太低,而且很不灵活。本文将介绍如何计算这个sign值以及给出对应的Python实现,这样就能实现通过直接HTTP交互抓取数据。点击链接查看详情>>> http://www.site-digger.com/html/articles/20211018/851.html
    发布时间:2021-10-18 14:59:23
  • 【经验分享】mysqldump时的两点技巧
    (1)如何避免锁表?
    加上--single-transaction=TRUE参数即可。
    来源:https://stackoverflow.com/questions/104612/run-mysqldump-without-locking-tables
    (2)如何排除某张表?例如 避免导出尺寸太大的日志表。
    使用--ignore-table=dbname.tablename指定即可,如果要排除多个,加上多个--ignore-table=dbname.tablename参数。
    来源:https://www.cnblogs.com/rxbook/p/7735485.html
    发布时间:2021-10-09 11:40:29
  • 【经验分析】urllib2使用"User-Agent"设置UA会无效原因的分析

    (1)如下代码,尝试使用"User-Agent"设置UA为"test",会失败:
    服务端接收到的UA信息为"Python-urllib/2.7",而不是"test"。
    urllib2.build_opener().open(urllib2.Request(url='http://192.168.1.200:1234', data=None, headers={'User-Agent': 'test'}))
    (2)将headers修改为{'User-agent': 'test'},成功。
    如附图1所示。原因是什么呢?

    可以在urllib2.py中找到答案:
    (1)首先urllib2默认会在headers列表中添加一个“User-agent”,其值为"Python-urllib/%s" % __version__,如附图2所示。
    (2)在do_open()中对headers进行了规范化处理(.title()),代码如下。
    headers = dict((name.title(), val) for name, val in headers.items())
    如图3所示,我们在该句前后分别打印headers,处理之前为:
    {'Host': '192.168.1.200:1234', 'User-Agent': 'test', 'Connection': 'close', 'User-agent': 'Python-urllib/2.7'},里面有我们设置的'User-Agent': 'test'
    处理之后就变成下面了:
    {'Host': '192.168.1.200:1234', 'Connection': 'close', 'User-Agent': 'Python-urllib/2.7'}
    原因是后面的'User-agent'经过.title()后也会变'User-Agent',在字典中覆盖掉了我们自定义的值。

    以后使用urllib2要设置UA时,一定要用“User-agent”,而不能用“User-Agent”!
    发布时间:2021-08-15 13:48:07
  • 【经验分享】在分析别人代码的时候,通过打印调用栈可以帮助我们快速掌握调用函数的上下文调用逻辑。Python中如何打印调用栈呢?如下。
    import traceback
    traceback.print_stack()
    参考>>> https://stackoverflow.com/questions/1156023/print-current-call-stack-from-a-method-in-python-code
    例如,我们想知道httplib.py中_send_request()函数的调用上下文,在_send_request()中加入上述代码,当代码执行的时候就会在控制台打印出调用栈信息,如附图所示。
    发布时间:2021-08-15 13:17:33
  • 【经验分享】如何给python函数增加一个timeout功能?
    想要实现的效果:
    在调用一个函数(不固定)的时候如果在指定的N秒内没有返回,就强制停止。

    在github上找到了一些方案例如func_timeout,timeout_decorator。经过测试对比,func_timeout比较理想,项目主页:github.com/kata198/func_timeout,“Python module to support running any existing function with a given timeout.”。它提供了一个装饰器func_set_timeout,非常方便。

    timeout_decorator原理:
    它是利用子线程StoppableThread来执行目标函数,当指定时间到达,子线程还未结束,就强制结束子线程,然后抛出FunctionTimedOut异常,详见github.com/kata198/func_timeout/blob/master/func_timeout/dafunc.py。
    发布时间:2021-06-24 14:11:26
  • 【演示】得物APP商品"最近购买列表"采集演示
    (1)根据商品的spuid从APP端采集。
    (2)得物的“最近购买”列表展示了最近3个月的销售记录,可以借以分析商品的价格和销量波动情况。包括字段“昵称、日期、规格、价格”,采集好的示例数据见:http://db.site-digger.com/csv/646577755f6170705f70726f647563745f6c6173745f736f6c645f6c6973745f73616d706c65/ 点击查看西安鲲之鹏的微博视频 ​​​
    发布时间:2021-06-24 13:17:22
  • 【演示】某小红书APP笔记详情及评论数据采集最新(20210618)演示
    近日某小红书的网页版不再展示笔记的“点赞数、评论数、收藏数和分享数”了,为了能拿到这些信息只能从APP端入手。本采集方案可以拿到笔记的所有属性值以及前10条评论数据。

    (1)笔记详情包含的字段
    'note_id'(笔记ID), 'note_type'(笔记类型,是普通的还是视频), 'user_red_id'(用户ID), 'user_name'(用户名), 'liked_count'(点赞数), 'shared_count'(分享数), 'collected_count'(收藏数), 'comments_count'(评论数), 'pubtime'(笔记发布时间), 'hash_tags'(标签), 'images_list'(原图列表), 'video'(视频链接,如果是视频笔记), 'desc'(笔记内容)
    示例数据链接:点击查看"小红书笔记示例数据"

    (2)笔记评论包含的字段
    'comment_id'(评论), 'note_id'(关联的笔记ID), 'user_name'(用户名), 'pubtime'(评论发布时间), 'like_count'(评论点赞数), 'score'(评分), 'content'(评论内容), 'sub_comment_count'(评论回复数), 'sub_comments'(评论回复内容)
    示例数据链接:点击查看小红书评论示例数据

    某小红书APP笔记详情及评论数据采集最新(20210618)演示

    发布时间:2021-06-18 14:30:34
  • 【经验分享】某特来电APP采集方案
    我们分析的是V5.11.0版本,加了360的壳,用了ssl证书固定。
    (1)经过ssl unpinning之后,Fiddler成功抓到包,如图1-3所示,分别对应“充电站搜索返回的列表”,“充电站详情”和“充电站的终端列表”。可以看到请求头中有很多陌生的参数,例如AVER,它是怎么构造出来的?
    (2)脱壳,反编译找到了实现过程代码,如图4所示。可以看出AVER是通过对时间戳参数ATS,经过"DES/CBC/PKCS7Padding"加密而成。其它参数在代码中也都能找到实现过程。其中"X-Token"的产生过程比较复杂,后面再分享产生过程。
    发布时间:2021-06-08 12:10:34
  • 【经验分享】com.google.gson.Gson的toJson()方法在插桩分析的时候太有用了,赞赞赞。
    function toJson(javaObject) {
        return Java.use("com.google.gson.Gson").$new().toJson(javaObject);
    };
    通过toJson(javaObject)可以将Java对象(数据结构)转换成JSON格式,非常方便。想想之前都是通过字符串拼接各个字段(熟悉)值,太费劲儿了。

    关于com.google.gson.Gson的toJson()的更多示例可以看这篇文章:https://www.cnblogs.com/reboost/p/9521603.html
    发布时间:2021-06-04 10:57:34
当前位置: 首页 > 公司微博 >
  • 西安鲲之鹏

    发布时间:2017-09-22 11:34:07
    Firefox历史版本下载地址:http://t.cn/Rbu2y44
    PS:slimerjs支持Firefox from 38.0 to 52.0. ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-09-22 10:06:04

    【无关技术】更多的时候是做一个运维,看着爬虫输出的信息越快越开心 西安鲲之鹏的微博视频 ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-09-20 17:23:31
    【经验分享】Chrome V55以后不支持设置页面编码了(不信你试试看)。不过,这货(Set Character Encoding插件)可以帮你实现。 http://t.cn/RaIDInW ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-09-14 15:10:39
    【经验分享】由于项目需要在Linux Server下将近千万个word文档(*.doc)转换为文本格式(html或txt),经测试效果最好的方法是使用LibreOffice的命令行工具。

    安装:
    sudo apt-get purge libreoffice-core
    sudo add-apt-repository -y ppa:libreoffice/ppa
    sudo apt-get update
    sudo apt-get install libreoffice

    doc转txt示例:
    soffice --headless --convert-to txt test.doc

    doc转html示例:
    soffice --headless --convert-to html test.doc

    关于convert-to参数的更多说明见这里 >>> http://t.cn/RVGwrbi

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-08-17 09:55:51
    搜房网(房天下)全国新房楼盘+二手房小区数据2017年07月份更新(“小区名称”,”城市”,”小区地址”,”项目特色”,”所属区域”,”邮编”,”产权描述”,”物业类别”,”竣工时间”,”开发商”,”建筑结构”,”建筑类别”,”建筑面积”,”占地面积”,”当期户数”,”总户数”,”绿化率”,”容积率”,”物业费”,”停车位”,”开盘时间”,”交房时间”,”小区简介”,”交通状况”,”周边信息”,”经度”,”纬度”,”物业公司”,”价格”,”页面链接”,”地图链接”,”区县”,”商 圈”,”装修情况”,”物业地址”,”入住时间”,”物业类型”,”环比上月”,”详情页链接”,”新房/二手房”,”newcode”) >>> 示例数据:http://t.cn/RCZcOAe

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-08-10 16:03:33
    【经验分享】利用Fiddler2的Custom Rules自动抓取App的TOKEN并记录到文件 >>> http://t.cn/R9RdWc3 ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-08-05 10:50:19
    【经验分享】某拨号服务器的Web API接口突然变得不稳定,重启Apache2后正常,但是过不来多久又会挂掉。查看error日志,发现如下信息:
    """
    [mpm_event:error] [pid 54893:tid 140124506744704] AH00484: server reached MaxRequestWorkers setting, consider raising the MaxRequestWorkers setting
    """
    谷歌查询相关资料得知需要调整/etc/apache2/mods-available/mpm_event.conf中的相关参数,将ServerLimit 从默认的16修改为30,将MaxRequestWorkers修改为750,然后重启Apache,问题得到解决。

    这里有两个坑总结一下:
    1)你不一定也使用的是mpm_event模块(还可能是mpm_worker或mpm_prefork),有两种方法判断。第一种方法是根据日志的提示信息如果是“mpm_prefork:error”那说明是mpm_prefork,这个时候就需要修改的是/etc/apache2/mods-available/mpm_prefork.conf文件;第二种方法是使用"apachectl -M"命令,会显示所有加载的模块,如附图所示我的服务器加载的是mpm_event_module。
    2)MaxRequestWorkers的值的上限取决于ServerLimit * ThreadsPerChild的大小。

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-07-26 14:47:36
    给遨游做个广告。目前支持"S5+认证"代理的浏览器几乎没有,但不是没有,让我来告诉你它就是遨游5。 ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-07-26 11:54:32
    【经验分享】requests库使用socks5代理提示“Missing dependencies for SOCKS support”问题解决:
    pip install pysocks
    pip install requests[socks]
    >>> http://t.cn/R9ZI4eH ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-07-21 12:30:38
    【经验分享】又解决一个疑难杂症:py2exe打包某使用paste的程序时总是失败,提示“No module named paste”,确认paste库是安装成功的。经过层层追踪最终发现是py2exe中的imp.find_module('paste')报的错。

    经过验证,imp.find_module('paste')果真报错:
    Python 2.7.6 (default, Jun 22 2015, 17:58:13)
    [GCC 4.8.2] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import imp
    >>> imp.find_module('paste')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ImportError: No module named paste
    >>> import paste
    这就奇了怪了,paste明明安装好了,而且工作正常,为何imp找不到它呢?!

    白色不得其解只得求助于stackoverflow(http://t.cn/RKB74OH),果然还是有高人,问题得到成功解决"The main problem seems that paste module doesnt have an __init__.py file"(就是在paste库的目录下建立一个__init__.py的空文件),经测试有效。

    大概半年前就遇到这个问题了,只能将paste换用cherrypy临时解决下,今天总算搞清楚问题了。

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-07-03 10:14:29
    [good]国内知名本地生活信息平台3648万商户数据2017年07月份更新
    附:CSV数据量统计截图。 ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-06-30 12:02:32
    【山重水复疑无路,柳暗花明又一村】
    经过不懈努力终于搞定裁判文书网App的数据解密! ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-06-27 18:02:52
    【如何启停虚拟网卡】
    ifup, ifdown无效。正确做法如下:

    查看虚拟网卡(名称:v123456)状态:
    ip link show v123456

    启动虚拟网卡(名称:v123456):
    sudo ip link set v123456 up ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-06-22 11:54:23
    【经验分享】
    【背景】某代理服务器有一条联通线路(主IP,固定),还有N条电信ADSL拨号线路(N大于100)。
    【问题】现在遇到的问题是DNS解析的时候走的是主IP线路(联通),导致某些大站(例如,京东)解析回来的IP就是联通的(智能DNS的缘故),这样当从ADSL线路去访问这些网站时访问的是其联通的镜像站,从而导致速度不快(慢)。
    【解决】找一台电信服务器,使用dnsmasq搭建一个中转DNS服务器,然后在代理服务器上使用该DNS,问题解决:现在所有使用智能DNS的域名解析出来IP都是电信的了。

    附图1:未使用电信中转DNS服务器前测试京东截图,解析出来的IP是联通的。
    附图2:使用了电信中转DNS服务器后测试京东截图,解析出来的IP是联通的。

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-05-17 21:19:15
    【经验分享】Pandoc 将某些HTML文档转WORD后无法正常打开,提示“无法打开文件...,因为内容有错误”(如附图1所示)。多次尝试后发现去掉HTML里所有<a>标签后问题解决(如附图2所示)。 ​​​​

    阅读全文 + 去微博评论 +

QQ在线客服
欢迎咨询,点击这里给我发送消息。
欢迎咨询,点击这里给我发送消息。

加微信咨询