更多>>关于我们

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

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

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

更多>>官方微博

西安鲲之鹏
陕西 西安

加关注

  • 【视频演示】受客户委托对淘宝APP-淘鲜达店铺商品数据抓取的可行性进行评估。实测可行(销量也可以采集到),如录屏所示。  西安鲲之鹏的微博视频 ​​​​

    发布时间:2020-02-21 17:44:07
  • 【经验分享】Win8下安装VMware出现"error1316 指定账户已存在"问题的解决

    似乎是之前的安装有注册表残留(在控制面板已安装程序列表里看不到),尝试安装了多次,持续出现"error1316 指定账户已存在"问题,网上有VMware注册表清理工具试了也不管用。

    后来使用Windows Installer CleanUp Utility(Windows Installer 清理实用工具包,简称MSICUU)解决了问题。MSICUU会显示你以前没卸干净的软件列表(如附图1所示), 然后选择你想完全卸掉的项目 ,卸载了就可以了。

    附MSICUU的下载链接>>> O【Windows Installer CleanUp Utility下载】2...
    发布时间:2020-02-19 17:14:47
  • 【视频】携程酒店价格采集对比工具定制版演示
    该最新定制版(2020年)使用Google Chrome Dev Protocol(非Selenium + webdirver模式)实现,不会暴露navigator.webdriver等各种特征,不容易被识别。
    对比17年的版本:采用的是(Selenium + phantomjs)能够被反爬虫机制识别,返回有虚假价格情况,失败率也高。  西安鲲之鹏的微博视频

    发布时间:2020-02-18 15:24:40
  • 【经验分享】一例正则表达式效率低问题的分析

    一直以来都觉得正则表达式的效率非常高,今天遇到一例正则匹配耗时特长的情况,mark一下。
    目标是判断目标网页(大小约350KB)中是否有符合以下要求的子串:
    "至少要有一个不为'的字符<div class="tips_unresult">"

    想当然的写出了如下的代码:
    re.compile(r'[^\']+<div[^<>]+class="tips_unresult">').search(html)
    测试的时候发现这一步耗时特别长,记了一下时,竟然花了差不多10秒,很是诧异。

    后来试着修改了下正则式,如下:
    re.compile(r'[^\']<div[^<>]+class="tips_unresult">').search(html)
    和第一次的相比,区别在于:这里只匹配"<div..."前面有一个非'字符即可,而第一步是匹配"<div..."前面有一个或多个非'字符。
    这次只用了0.004秒,结果相差了1600多倍!

    PS:[汗]第一次的那个代码在以往一个的爬虫中曾执行过70多万次[汗],以前竟然没有发现问题,还以为时间都花在webkit加载页面上了...这样一算竟然多花了近一周的时间。

    独立的测试代码和运行截图如附图所示。
    发布时间:2020-02-17 17:57:15
  • 【经验分享】“supervisor实现无限重试”中的坑

    背景:Debian 10系统,Wifi联网,需要实现系统启动时自动启动autossh。
    问题:如果网络未连接成功(例如,Wifi是在用户登录之后才会连接),启动autossh会失败退出。因此不能直接使用rc.local(在网络连接成功之前就执行了)。于是想到使用supervisor,让其不断的重试,当网络连接正常时就autossh就会正常被启动了,配置如附图1所示。但是发现supervisor最多只重试了3次就放弃了。

    查询supervisor configuration文档(http://supervisord.org/configuration.html?highlight=startretries)得知startretries参数用于控制每次启动的重试次数,默认值是3。

    另外还有一个autorestart参数,如果设置为true,则无条件重启(If true, the process will be unconditionally restarted when it exits, without regard to its exit code.)。但我设置了autorestart为true后,还是只重试了3次。

    为什么呢?在autorestart参数注意事项里看到了如下说明:
    autorestart controls whether supervisord will autorestart a program if it exits after it has successfully started up (the process is in the RUNNING state).

    意思就是说目标program必须成功启动过一次(被标记过为RUNNING状态),autorestart机制才会起作用。

    由于本案例中supervisor服务启动的时候网络连接还没建立成功,所以目标program(autossh)首次启动(3次重试)会失败,这样autorestart机制就没起作用。

    怎么破?
    首先我们要弄清楚supervisor是怎么判断目标程序成功启动了呢。
    在startsecs参数的说明里我们可以看到:
    The total number of seconds which the program needs to stay running after a startup to consider the start successful (moving the process from the STARTING state to the RUNNING state).
    也就是只有目标程序启动保持运行超过startsecs秒才会被认为启动成功了(标记状态为RUNNING)。startsecs默认值是1。本例中autossh由于没有网络连接闪退了,所以supervisor认为其启动失败。

    弄清原理之后,就好办了,我们实现一个这样的脚本:
    (1)先判断网络连接是否正常(可以使用ping),如果不正常则等待10秒(只要超过startsecs值即可)后退出。
    (2)如果网络连接正常,则启动autossh。

    #!/bin/bash

    #
    检测网络是否通畅
    ping -c 1  www.baidu.com
    if [ $? -eq 0 ]
    then
      # 网络正常,启动autossh
      echo "Network is ready"
      sudo /bin/su qi -l -c "/usr/bin/autossh -M 6777 -N -D 127.0.0.1:1080 目标主机SSH参数"
    else
      #
    网络不通,等待11秒后退出
      echo "Network is not ready."
      sleep 11s
      exit 1
    fi

    实测成功。

    附Supervisor Configuration File文档链接:http://supervisord.org/configuration.html
    发布时间:2020-02-15 23:14:20
  • 发布时间:2020-02-14 21:06:44
  • 【经验分享】python2 pip安装frida-tools,在安装prompt-toolkit依赖时出现"No matching distribution found for prompt-toolkit<4.0.0,>=3.0.3 (from frida-tools)"问题(如附图1所示)的解决。

    问题分析:需要的prompt-toolkit版本是 <4.0.0,>=3.0.3,而python 2库中prompt-toolkit的最高版本才是2.0.10。 查询得知"prompt_toolkit 3.0 requires at least Python 3.6." (来源:https://python-prompt-toolkit.readthedocs.io/en/master/),3.0以后版本需要至少python 3.6。

    怎么破?
    (1)下载frida-tools源码包。
    (2)修改setup.py文件,如附图2所示,将prompt-toolkit的版本要求去掉。
    (3)sudo python setup.py install。
    发布时间:2020-02-11 18:55:01
  • 【视频演示】受客户委托对淘宝APP直播弹幕数据抓取的可行性进行评估。实测可行,如录屏所示。  西安鲲之鹏的微博视频 ​​​​

    发布时间:2020-02-11 15:38:51
  • 【经验分享】Linux下如何查看服务器的型号,出厂日期?
    可以使用dmidecode命令查看BIOS信息来实现。
    e.g.
    # 查看机器型号
    sudo dmidecode -s system-product-name
    #
    查看出厂日期
    sudo dmidecode -s bios-release-date

    如图1所示为我最近折腾的TDE上网本的情况;
    如图2所示为公司某服务器的情况;
    如图3所示为阿里云服务器的情况;

    关于dmidecode命令的详细说明见这里 >>> http://t.cn/A6Pemztx
    发布时间:2020-02-08 13:32:58
  • 【经验分享】这两天被冠状病毒困在家,翻出了一台10年前的上网本(TDE山寨货),配置如图1(i686 CPU 1.6GHz,1G RAM)。
    折腾了一下安装各种系统,可能驱动兼容性问题,期间遇到了各种问题,总结如下:

    (1)Chrome OS:
    安装比较顺利,运行也比较流畅,进入系统之后就是一个谷歌浏览器。
    但由于国内无法使用Google相关服务,使用起来比较麻烦,放弃。

    (2)Android系列:
    Bliss OS X86 32位,安装后无法进入桌面环境。
    PrimeOS,没有32位的版本,无法安装。

    (3)Linux发行版:
    Linux Mint 19.3 cinnamon 32位,进入桌面后巨卡,无法正常使用,后来试了兼容模式启动情况好一些。
    Ubuntu 16.04.6 Desktop i386,安装过程复制文件后期卡死,无后文。
    Debian 10.2.0 i386,赞一个,安装过程很流畅(“配置软件包管理器”那步耗时较长),使用也很流畅。

    最终选定使用Debian 10。
    发布时间:2020-02-08 11:17:45
当前位置: 首页 > 公司微博 >
  • 西安鲲之鹏

    发布时间: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所示)。 ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-05-17 11:00:47
    安居客近来改版有点勤,价格这块4月份还是静态展示的,现在改成JS生成了。不过这不是什么问题。道是它的封IP(出验证)的策略越来越难绕过了,目前只有我们的动态IP代理可以有效解决 >>>  http://t.cn/RXK6ZcF

    数据采集与反采集这个较量永远不会停止... ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-04-27 17:07:54
    【Gif动画演示】动态IP稳定高匿智能HTTP代理演示
    PS:点击查看大图可播放Gif动画。

    了解详情 >>> http://t.cn/RXK6ZcF ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-04-27 09:51:47
    Linux下两种方法查看网卡的逻辑名称(logical name):
    【1】ls /sys/class/net 如附图1所示;
    【2】sudo lshw -C network 如附图2所示;

    有人会问为什么要查看这呢,多块网卡默认不都是eth0, eht1, eth2...吗?
    这和系统有关系,例如Ubuntu16.04中,网卡名称默认就是ens33, ens34...之类的,而非eth0, eth1...。

    附:如何修改Ubuntu16.04下网卡名ens为eth:
    sudo i /etc/default/grub
    修改:
    GRUB_CMDLINE_LINUX=" "
    为:
    GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
    再执行:
    sudo grub-mkconfig -o /boot/grub/grub.cfg
    然后重启一下就可以。

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-04-23 17:38:40
    【vmrun小试牛刀】
    (1)命令行启动vmware虚拟机,示例:
    vmrun start "G:\VMS\XP2016\Windows XP Professional.vmx"
    (2)命令行重启vmware虚拟机,示例:
    vmrun reset "G:\VMS\XP2016\Windows XP Professional.vmx"

    vmrun命令说明文档:http://t.cn/RX01Cd3 ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-04-16 18:38:18
    【问题概述】www.momondo.com.cn这个网站用了一个简单但有效的策略来检测客户端是否是真实的浏览器。虽然花了我不少时间,但还是赞一个。
    【问题描述】你可以试一下直接curl Omomondo - 全球机票酒店搜索,会发现始终得不到网站的响应;可以再试下用Python的urllib2库,一样获取不到内容。但是在浏览器内访问却始终正常。是不是很奇怪?看来它可以有效判断出是否是真实的浏览器。
    【解决方案】经过抓包对比,最终找出了它的方法。它主要检测了如下三点:
    1)User-Agent不能为空,也不能使用众所周知的非浏览器UA,例如"curl/7.27.0"。要伪装成一个真实的浏览器UA。
    2)不能为HTTP短连接,也就是必须要指定“Connection: keep-alive”(伪造这个头即可,不需要真正支持长连接)。
    3)Accept-Encoding不能为空,可以随便指定一个客户端支持的编码。
    最后这样测试,你会发现成功通过了网站的检测:
    curl -v -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36" -H "Connection: keep-alive" -H "Accept-Encoding: nothing" Omomondo - 全球机票酒店搜索(如截图所示)

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-03-18 21:06:55
    【一款大家都说好用的命令行带宽测速工具】
    >>> http://t.cn/zRjecv4
    PS:经过我在多地服务器上测试,结果还是挺准确的,特别是上传测速。speedtest.net全球众多的测速节点功不可没。

    只需要两步:
    1)下载这个工具
    wget http://t.cn/RiU1R0b
    2)启动
    python speedtest.py

    具体效果见下面附图。 ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-03-16 14:18:45
    【腾讯这是要放弃SmartQQ的节奏吗?】
    如图所示。消息丢失率很高,抓包可见poll2请求大量504(timeout)错误。 ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-03-15 12:58:18
    【pssh实在太酷了】
    图一:我通过pssh了解20台Linux服务器的负载情况,cool!
    图二:我通过pssh结合pslurp完成了20台Linux服务器重要数据文件的“批量打包、批量取回、批量删除远程备份”的操作,cool!

    参考资料:
    http://t.cn/RidpWFN
    http://t.cn/RidpWFp ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-03-14 17:32:29
    【域名NS记录查询】
    Windows:
    nslookup –qt=NS 目标域名

    Linux:
    host -t NS 目标域名

    参考文章:http://t.cn/zQJFraU http://t.cn/RGIQcyC ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-03-12 19:50:16
    【一个cron计划任务引发的血案】近日某Ubuntu14.04服务器上mongodb老自动挂掉,观察一段发现系统内存严重不足,swap都快被用完了,如图一所示,mongodb在内存耗尽的时候就挂掉了。很奇怪,到底是什么进程占用了这么多内存呢?

    参考这篇文章里的方法 Linux: Find Out What Process Are Using Swap Space > http://t.cn/RinTwWY

    执行如下命令,查看哪些进程使用了swap,并按使用量大小排列:
    for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | less

    这一看不打紧,发现里面有大量的python进程。
    再用ps aux |grep python一看,一身冷汗,有3899个python进程!如图二所示。

    可以断定内存就是被这些进程给吃完了!
    PS:这是一个每分钟启动一次的计划任务,功能是实现一个动态域名解析客户端。应该是脚本用的访问网络的操作卡住了(系统默认无限等待)造成进程无法退出,久而久之累积出来了几千个后台进程...

    杀掉这些进程,修复Bug。现在内存使用看起来正常了,如图三所示。

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-03-10 22:26:15
    MySQL抓包工具 - MySQL Sniffer: MySQL Sniffer 是一个基于 MySQL 协议的抓包工具,实时抓取 MySQLServer 端的请求,并格式化输出。>>>  详细介绍http://t.cn/RiQAESc
    Ubuntu14.04下试了一下,效果很赞(如下截图)。 ​​​​

    阅读全文 + 去微博评论 +

  • 西安鲲之鹏

    发布时间:2017-02-22 14:07:44
    如何避免SSH时出现“Write failed: Broken pipe”?
    ssh -o ServerAliveInterval=60 user@host
    更多方法 >>> http://t.cn/zYc5wR1 ​​​​

    阅读全文 + 去微博评论 +

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

加微信咨询