如何抓取JS动态输出(非ajax)的电话号码

很多网站为了防止用户的隐私信息(电话、手机、邮箱等)被爬虫抓取,对这些信息作了特殊处理。例如,采用JS输出、采用Ajax动态加载、以图片的形式显示等等。

 

其中最为常见的就是采用JS输出,这种方法实现的成本最低,同样也最好被抓取。

 

例如这个页面:

http://www.tripadvisor.com/Hotel_Review-g34859-d1526306-Reviews-Holiday_Inn_Express_Hotel_Suites-Columbus_Georgia.html

 

 

如何抓取JS动态输出(非ajax)的电话号码_第1张图片

 

 

电话号码是采用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 

 

特别说明:该文章为鲲鹏数据原创文章 ,你除了可以发表评论外,还可以转载到你的网站或博客,但是请保留源地址,谢谢!!(尊重他人劳动,你我共同努力)

你可能感兴趣的:(电话号码,鲲鹏数据,西安鲲之鹏,JS动态输出)