更多>>关于我们
西安鲲之鹏网络信息技术有限公司从2010年开始专注于Web(网站)数据抓取领域。致力于为广大中国客户提供准确、快捷的数据采集相关服务。我们采用分布式系统架构,日采集网页数千万。我们拥有海量稳定高匿HTTP代理IP地址池,可以有效获取互联网任何公开可见信息。
您只需告诉我们您想抓取的网站是什么,您感兴趣的字段有哪些,你需要的数据是哪种格式,我们将为您做所有的工作,最后把数据(或程序)交付给你。
数据的格式可以是CSV、JSON、XML、ACCESS、SQLITE、MSSQL、MYSQL等等。
更多>>技术文章
如何抓取JS动态输出(非ajax)的电话号码
发布时间:2011-03-16
很多网站为了防止用户的隐私信息(电话、手机、邮箱等)被爬虫抓取,对这些信息作了特殊处理。例如,采用JS输出、采用Ajax动态加载、以图片的形式显示等等。
其中最为常见的就是采用JS输出,这种方法实现的成本最低,同样也最好被抓取。
例如这个页面:
电话号码是采用JS输出的,JS代码如下:
<script>
<!--
function escramble_751(){
var a,b,c
a='877'
b='-5'
a+='-85'
b+='095'
c='9'
document.write(a+c+b)
}
escramble_751()
//-->
</script>
PS: 更BT的是这个函数名“escramble_751()”还是不断变化的。
不过利用强大的字符串匹配工具“正则表达式”,还是可以很方便地将其提取出来的:
# Python code
phone_re = re.compile("a='([ \+\-\d]+?)'.*?b='([ \+\-\d]+?)'.*?a\+='([ \+\-\d]+?)'.*?b\+='([ \+\-\d]+?)'.*?c='([ \+\-\d]+?)'", re.DOTALL)
match = phone_re.search(html)
if match:
a, b, c, d, e = match.groups()
telephone = a + c + e + b + d
else:
telephone = None
特别说明:本文旨在技术交流,请勿将涉及的技术用于非法用途,否则一切后果自负。如果您觉得我们侵犯了您的合法权益,请联系我们予以处理。
☹ Disqus被Qiang了,之前所有的评论内容都看不到了。如果您有爬虫相关技术方面的问题,欢迎发到我们的问答平台:http://spider.site-digger.com/