使用htmlparser和httpClient制作网络爬虫——JavaScript隐藏邮箱解析问题

本文介绍了一个网络爬虫项目中遇到的挑战:如何抓取并解析通过JavaScript动态生成的电子邮件地址。作者分享了解决这一问题的具体步骤和技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在最近的一个网络爬虫项目中遇到了需要制作网络爬虫,网上看了一下htmlparser和httpclient的一些文章,半懂不懂就开始做了。总体的理解就是httpclient是用来创建连接的,而真正执行网页页面分析的是htmlparser,源代码部分我就不解析了,网上大把文章我贴一个我看到的比较全面一点的文章:网络爬虫制作

在制作爬虫的过程中有个技巧:

建议用httpclient创建连接把网页下载下来,这样使用文本解析工具,一边写代码,一边对照出问题的网页部分,可以加快进度,解决Bug。推荐一个文本阅读工具Notepade+,相当给力。它能够自动给你解析HTML的节点。你甚至可以用它来写程序~~~~~

回归正题,通过上面的文章,大概你就明白该怎么制作了,这里只提出一个我搞了一天的问题,额~~~~~其实是因为我不懂js还有网页制作,不然也不会那么难。

 <tr>
                  <td bgcolor="#F9F9F9" class="blackmid pd" height="46"> E-mail:</td>
                  <td bgcolor="#FFFFFF" class="pd midtext"><script type="text/javascript">
        //<![CDATA[
        var l=new Array();
        l[0]='>';l[1]='a';l[2]='/';l[3]='<';l[4]='|109';l[5]='|111';l[6]='|99';l[7]='|46';l[8]='|97';l[9]='|110';l[10]='|105';l[11]='|104';l[12]='|99';l[13]='|50';l[14]='|101';l[15]='|103';l[16]='|100';l[17]='|105';l[18]='|114';l[19]='|98';l[20]='|97';l[21]='|64';l[22]='|97';l[23]='|115';l[24]='|111';l[25]='|114';l[26]='>';l[27]='"';l[28]='|109';l[29]='|111';l[30]='|99';l[31]='|46';l[32]='|97';l[33]='|110';l[34]='|105';l[35]='|104';l[36]='|99';l[37]='|50';l[38]='|101';l[39]='|103';l[40]='|100';l[41]='|105';l[42]='|114';l[43]='|98';l[44]='|97';l[45]='|64';l[46]='|97';l[47]='|115';l[48]='|111';l[49]='|114';l[50]='';l[51]=':';l[52]='o';l[53]='t';l[54]='l';l[55]='i';l[56]='a';l[57]='m';l[58]='"';l[59]='=';l[60]='f';l[61]='e';l[62]='r';l[63]='h';l[64]=' ';l[65]='"';l[66]='t';l[67]='x';l[68]='e';l[69]='t';l[70]='d';l[71]='i';l[72]='m';l[73]='"';l[74]='=';l[75]='s';l[76]='s';l[77]='a';l[78]='l';l[79]='c';l[80]=' ';l[81]='a';l[82]='<';    
        for (var i = l.length-1; i >= 0; i=i-1){
        if (l[i].substring(0, 1) == '|') document.write("&#"+unescape(l[i].substring(1))+";");
        else document.write(unescape(l[i]));}
        //]]>
        </script></td>
                </tr>
上面就是我遇到的一段邮箱的代码,刚开始我怎么抓文本都抓不到邮箱。在html文件里面也find不到任何关于@或者邮箱数字的关键字。其实作者是通过js没有执行前,网页的源码已经被你拉回来的特性,反低级爬虫。那么我们如何解析这一段文字呢?

我使用一小段代码,大概的思想很简单。仔细一点,你可以把上面的var l数组打印出来,打印出来后你会发现,其实它只有一行。

那么我使用split("\n")就可以分割字符串,而取出对应数组元素赋值那一行即可。最后你可以使用substring截取数组的有效段。其实,就是依葫芦画瓢,把js的执行过程大概重复一次即可。再次使用split分割上一步得到的字符串,最后做个简单的判断,比如例子里面作者使用“|”开头标识有效字段。最后,作者很恶心的在数组里面重复了邮箱,这个也需要大家根据实际情况去辨别,那些unescape其实只是迷惑我们这些个小白的,根本就没起作用。


写完了,其实,难点就是个邮箱,当然,还有一些输出到excel的东东,那就很简单了。还是不说了。。。

说的不对的地方,请斧正。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值