关于使用Java实现的简单网络爬虫Demo

本文介绍了网络爬虫的基本概念及其实现原理,通过一个Java示例程序演示了如何抓取网页上的链接,并将这些链接存储到本地文件中。此外还展示了如何验证抓取链接的有效性。

什么是网络爬虫?

          网络爬虫又叫蜘蛛,网络蜘蛛是通过网页的链接地址来寻找网页,从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。所以要想抓取网络上的数据,不仅需要爬虫程序还需要一个可以接受”爬虫“发回的数据并进行处理过滤的服务器,爬虫抓取的数据量越大,对服务器的性能要求则越高。


网络爬虫的实现原理

           根据这种原理,写一个简单的网络爬虫程序 ,该程序实现的功能是获取网站发回的数据,并提取之中的网址,获取的网址我们存放在一个文件夹中,关于如何就从网站获取的网址进一步循环下去获取数据并提取其中其他数据这里就不在写了,只是模拟最简单的一个原理则可以,实际的网站爬虫远比这里复杂多,深入讨论就太多了。除了提取网址,我们还可以提取其他各种我们想要的信息,只要修改过滤数据的表达式则可以。以下是利用Java模拟的一个程序,提取新浪页面上的链接,存放在一个文件里


源代码

[javascript] view plain copy
  1. import java.io.BufferedReader;  
  2. import java.io.FileWriter;  
  3. import java.io.IOException;  
  4. import java.io.InputStreamReader;  
  5. import java.io.PrintWriter;  
  6. import java.net.MalformedURLException;  
  7. import java.net.URL;  
  8. import java.net.URLConnection;  
  9. import java.util.regex.Matcher;  
  10. import java.util.regex.Pattern;  
  11.   
  12. public class WebSpider {  
  13.     public static void main(String[] args) {  
  14.         URL url = null;  
  15.         URLConnection urlconn = null;  
  16.         BufferedReader br = null;  
  17.         PrintWriter pw = null;  
  18.         String regex = "http://[\\w+\\.?/?]+\\.[A-Za-z]+";  
  19.         Pattern p = Pattern.compile(regex);  
  20.         try {  
  21.             url = new URL("http://www.sina.com.cn/");  
  22.             urlconn = url.openConnection();  
  23.             pw = new PrintWriter(new FileWriter("e:/url.txt"), true);//这里我们把收集到的链接存储在了E盘底下的一个叫做url的txt文件中  
  24.             br = new BufferedReader(new InputStreamReader(  
  25.                     urlconn.getInputStream()));  
  26.             String buf = null;  
  27.             while ((buf = br.readLine()) != null) {  
  28.                 Matcher buf_m = p.matcher(buf);  
  29.                 while (buf_m.find()) {  
  30.                     pw.println(buf_m.group());  
  31.                 }  
  32.             }  
  33.             System.out.println("获取成功!");  
  34.         } catch (MalformedURLException e) {  
  35.             e.printStackTrace();  
  36.         } catch (IOException e) {  
  37.             e.printStackTrace();  
  38.         } finally {  
  39.             try {  
  40.                 br.close();  
  41.             } catch (IOException e) {  
  42.                 e.printStackTrace();  
  43.             }  
  44.             pw.close();  
  45.         }  
  46.     }  
  47. }  

 

在Eclipse中的运行结果

底部显示获取成功了!接下来我们去E盘根目录下找到url.txt。看看有没有这个文件



接下来我们打开一下txt文件,会发现一系列的URL链接。这些就是我们抓取新浪首页获得的所有URL




我们随便复制一条URL到浏览器中打开。看看效果。比如我们用这条http://i1.sinaimg.cn/dy/deco/2013/0316/arr.png



好的。没有任何问题。图片都出来了。说明我们抓取的这个URL是有效的

至此我们的一个简单的Demo就展示完成了


转载于:https://www.cnblogs.com/huangwentian/p/6484534.html

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值