如何抓取JS动态输出(非ajax)的电话号码
2015-07-07 22:53
991 查看
很多网站为了防止用户的隐私信息(电话、手机、邮箱等)被爬虫抓取,对这些信息作了特殊处理。例如,采用JS输出、采用Ajax动态加载、以图片的形式显示等等。
其中最为常见的就是采用JS输出,这种方法实现的成本最低,同样也最好被抓取。
例如这个页面:
http://www.tripadvisor.com/Hotel_Review-g34859-d1526306-Reviews-Holiday_Inn_Express_Hotel_Suites-Columbus_Georgia.html
![](http://www.site-digger.com/uploads/allimg/110316/1-11031621551IU.jpg)
电话号码是采用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
原文作者:西安鲲之鹏(http://www.site-digger.com)
原文链接:http://www.site-digger.com/html/articles/20110316/3.html
点击打开链接
其中最为常见的就是采用JS输出,这种方法实现的成本最低,同样也最好被抓取。
例如这个页面:
http://www.tripadvisor.com/Hotel_Review-g34859-d1526306-Reviews-Holiday_Inn_Express_Hotel_Suites-Columbus_Georgia.html
![](http://www.site-digger.com/uploads/allimg/110316/1-11031621551IU.jpg)
电话号码是采用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
原文作者:西安鲲之鹏(http://www.site-digger.com)
原文链接:http://www.site-digger.com/html/articles/20110316/3.html
点击打开链接
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- 我是运营,我没有假期
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- jsp (四)