网页爬虫抓取百度图片(本次做的爬虫实例比较简单,晚上回来的时间用来码代码 )
优采云 发布时间: 2021-09-16 06:16网页爬虫抓取百度图片(本次做的爬虫实例比较简单,晚上回来的时间用来码代码
)
最近,我在互联网上看到了文章爬虫的引入。我觉得很有趣。搬家总比搬家好。晚上回来的时间只是用来编码的~~
网络爬虫:根据一定的规则对网页上的信息进行爬网,通常先爬网到一些URL,然后将这些URL放入队列中进行反复搜索。我不知道是DFS还是BFS。我在这里不研究算法,因为爬虫示例相对简单。我实现了一个java小程序来抓取百度页面的徽标
事实上,爬虫的作用远远大于此。此示例仅供介绍性参考
首先,让我们分析一下,在本例中,抓取图片的过程只不过是以下步骤:
1.访问百度主页获取网页返回的信息
2.get有用信息(这里是网页的源代码或所有图片的URL)
3.访问所有图片的URL
4.可以以流的形式本地存储
通过以上步骤,很容易编写一个简单的爬虫程序。下面是代码中带有注释的代码
<p>import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Bug {
String url = "http://www.baidu.com";//待爬取的URL
//获取url页面的源码;
public String ClimbBug() throws IOException{
URL accessurl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) accessurl.openConnection();
conn.connect();//连接
InputStream is = null;
if(conn.getResponseCode()==200){//判断状态吗是否为200,正常的话获取返回信息
byte[] b=new byte[4096];
is = conn.getInputStream();
StringBuilder sb = new StringBuilder();
int len=0;
while((len=is.read(b))!=-1){
sb.append(new String(b,0,len,"UTF-8"));
}
return sb.toString();//返回百度页面源代码,这里跟网页上右键查看源代码的效果一致
}
return "Error";
}
//获取图片页面URL
public List regex() throws IOException{
System.out.println(new Bug().ClimbBug());
String regex = "src[\\s\\S]*?>";//匹配所有图片的URL
List list = new ArrayList();
Matcher p = Pattern.compile(regex).matcher(new Bug().ClimbBug());
while(p.find()){
list.add(p.group());
}//匹配到放入我们的URLlist
return list;
}
//下载图片到本地或者结合数据库做其他想做的操作;
public void download(List list) throws IOException{
InputStream is =null;
OutputStream os =null;
for (int i=0;i