php抓取网页snoopy(一个简单的java爬虫产品试验时的保存方式分析)
优采云 发布时间: 2021-10-09 02:23php抓取网页snoopy(一个简单的java爬虫产品试验时的保存方式分析)
一个简单的java爬虫产品
最近在研究爬虫和Lucene。虽然我决定使用 Heritrix 来进行爬取操作,但我发现它仍然存在一些问题。比如需要程序生成相应的XML文件。同一份工作,如何保证重复操作?作业的文件夹总是相同(Heritrix为作业创建的文件夹是“作业名称-时间戳”)等等,都是需要考虑的问题,最终搁浅。后来google了一下,找到了一个简单的爬虫程序代码(),然后试了一下,发现确实可以获取到网页的内容。还是要感谢代码提供者——Jack.Wang。虽然测试成功,但在后续的大数据量测试中仍然存在问题。在最初的实验中,我只是让程序抓取 10 个 URL 链接。当我把网址链接数改为100的时候,问题就出现了——网址有重复,很容易变成死循环。比如我第一次抓取A.html,A.html中有两个链接:B.html,C.html,我抓取A.html后,程序会抓取B.html,这个如果有链接到B.html 中的所有链接中的页面 A.html,然后程序将再次抓取页面 A.html,从而形成一个永远无法停止的死循环。跟踪程序发现,原来已经爬取过的网址没有从要爬取的网页的链接列表中删除,造成死循环。并且很容易成为无限循环。比如我第一次抓取A.html,A.html中有两个链接:B.html,C.html,我抓取A.html后,程序会抓取B.html,这个如果有链接到B.html 中的所有链接中的页面 A.html,然后程序将再次抓取页面 A.html,从而形成一个永远无法停止的死循环。跟踪程序发现,原来已经爬取过的网址没有从要爬取的网页的链接列表中删除,造成死循环。并且很容易成为无限循环。比如我第一次抓取A.html,A.html中有两个链接:B.html,C.html,我抓取A.html后,程序会抓取B.html,这个如果有链接到B.html 中的所有链接中的页面 A.html,然后程序将再次抓取页面 A.html,从而形成一个永远无法停止的死循环。跟踪程序发现,原来已经爬取过的网址没有从要爬取的网页的链接列表中删除,造成死循环。从而形成一个永远无法停止的死循环。跟踪程序发现,原来已经爬取过的网址没有从要爬取的网页的链接列表中删除,造成死循环。从而形成一个永远无法停止的死循环。跟踪程序发现,原来已经爬取过的网址没有从要爬取的网页的链接列表中删除,造成死循环。
虽然我现在加了这个判断,但从我运行程序的效果来看,并不理想。总感觉有点慢。爬取 800 页需要一两分钟。我觉得这有点不合理。使用这个产品,我遇到了这么几种情况,有的和大家分享,有的请教大家。1.创建索引时,需要将网页的URL和内容传递给对应的方法。当然,URL 和内容必须相对应。可能是经验太少了。我采用了构造一个JavaBean的方法来传递。不知道你有没有更好的办法。2.保存要索引的内容最初的想法不是创建文件,而是直接将内容保存到Variables中,然后创建索引,即先抓取网页的内容,然后将网页的内容和网址保存到自己构建的JavaBean对象中,然后将该对象放入一个列表列表中,等待所有的网页都被抓取完毕,将该列表传递给创建索引的方法。这种方式看似不错,但是当url数量较多时,会造成内存不足,所以创建文件比较安全。3.碰巧遇到这个关于网页编码问题的问题。本来,我抢了一位顾客网站。后来同事说如果客户看访问日志,这个月的数据就是平时的数据。不一样的,所以我抓了公司的网站,结果,问题出现了。然后把这个对象放到一个列表列表中,等待所有的网页都被抓取,把这个列表传递给创建索引的方法。这种方式看似不错,但是当url数量较多时,会造成内存不足,所以创建文件比较安全。3.碰巧遇到这个关于网页编码问题的问题。本来,我抢了一位顾客网站。后来同事说如果客户看访问日志,这个月的数据就是平时的数据。不一样的,所以我抓了公司的网站,结果,问题出现了。然后把这个对象放到一个列表列表中,等待所有的网页都被抓取,把这个列表传递给创建索引的方法。这种方式看似不错,但是当url数量较多时,会造成内存不足,所以创建文件比较安全。3.碰巧遇到这个关于网页编码问题的问题。本来,我抢了一位顾客网站。后来同事说如果客户看访问日志,这个月的数据就是平时的数据。不一样的,所以我抓了公司的网站,结果,问题出现了。会造成内存不足,所以创建文件比较安全。3.碰巧遇到这个关于网页编码问题的问题。本来,我抢了一位顾客网站。后来同事说如果客户看访问日志,这个月的数据就是平时的数据。不一样的,所以我抓了公司的网站,结果,问题出现了。会造成内存不足,所以创建文件比较安全。3.碰巧遇到这个关于网页编码问题的问题。本来,我抢了一位顾客网站。后来同事说如果客户看访问日志,这个月的数据就是平时的数据。不一样的,所以我抓了公司的网站,结果,问题出现了。
原来公司的网站是用GB2312编码做的一个页面,现在用的是UTF-8编码。虽然已经判断了页面的编码,但是还是不能解决保存文件中中文乱码的问题。我不认识每个人。有什么好办法吗?报错信息为:java.io.UnsupportedEncodingException 附上爬虫代码
现在就下载