package com.html; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; /** * 利用java的jsoup开发搜索引擎爬虫 * @author Leinuoa */ public class HtmlJsoup { /** * 根据网址和页面的编码集获取网页的源代码 * @param url 需要下载的URL地址 * @param encoding 网页的编码集 * @return String 网页的源代码 */ public static String getHtmlResourceByURL(String url,String encoding){ StringBuffer sb = new StringBuffer(); URL urlObj = null; URLConnection uc = null; BufferedReader br = null; try{ //建立网络连接 urlObj = new URL(url); //打开网络连接 uc = urlObj.openConnection(); br = new BufferedReader(new InputStreamReader(uc.getInputStream(),encoding)); String tempLine = null;//临时变量(就是一个临时文件) while((tempLine=br.readLine())!=null){ sb.append(tempLine+"\n");//每读一行后自动换行 } }catch(Exception e){ e.getStackTrace(); System.out.println("Connection timeOut......"); }finally{ if(null != br){ try { br.close(); } catch (IOException e) { e.printStackTrace(); } } } return sb.toString(); } /** * 根据一个图片的URL地址,通过这个URL批量下载图片到服务器 * @param imgURL 要下载的图片所在服务器地址 * @param filePath 下载完成后保存图片的服务器地址 */ public static void downImages(String imgURL,String filePath){ try { //首先获取图片名 String fileName = imgURL.substring(imgURL.lastIndexOf("/")); //创建文件的目录 File files = new File(filePath); //判断文件目录是否存在,若不存在就创建一个 if(!files.exists()){ files.mkdirs(); } //获取图片文件的下载地址 URL url = new URL(imgURL); //连接网络图片地址 HttpURLConnection huc = (HttpURLConnection) url.openConnection(); //获取连接的输出流 InputStream is = huc.getInputStream(); //创建文件 File file = new File(filePath+fileName); //创建输出流,写入文件 FileOutputStream out = new FileOutputStream(file); int i = 0; while((i=is.read()) != -1){ out.write(i); } out.close(); is.close(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { //根据网址和页面的编码集获取网页的源代码 String htmlResource = getHtmlResourceByURL("http://mil.sohu.com/20151117/n426688885.shtml","gb2312"); // System.out.println(htmlResource); //解析源代码 Document document = Jsoup.parse(htmlResource); //获取网页的图片 //图片标签<img src="" alt="" width="" height="" /> Elements elements = document.getElementsByTag("img"); for(Element element:elements){ String imgSrc = element.attr("src"); // String imgPath = "http://i2.itc.cn/"+imgSrc; System.out.println("下载的图片地址:"+imgSrc); downImages(imgSrc, "E:\\images\\"); System.out.println("图片下载成功!============"); } } }
相关推荐
3. **图片链接的处理**:获取到图片链接后,源码会检查链接的有效性,确保它们指向真实的图片资源,而不是其他类型的文件。这可能涉及到HTTP请求头的设置,比如设置`User-Agent`以模拟浏览器行为。 4. **下载图片**...
- **连接与下载**:JSoup不仅用于解析本地文件,还可以直接连接到URL,下载并解析远程网页内容。 - **安全处理**:JSoup对HTML进行了安全处理,避免了XSS(跨站脚本攻击)等安全问题。 2. **核心API** - **Jsoup...
总的来说,Android开发者可以利用Jsoup库轻松地解析和操作HTML内容,从而实现与网页的交互。理解如何在Android环境中正确使用Jsoup,并结合异步任务处理网络请求,是提升应用程序功能的重要技能。
**JSoup:网页抓取与解析利器** ...通过上述步骤,你可以利用JSoup抓取网页内容并保存为本地文件,模拟浏览器的“另存为”功能。在实际开发中,JSoup的灵活性和便捷性使其成为Web抓取和解析任务的理想选择。
2、利用硬件加速感应器,摇动手机实现切换歌曲的功能 3、利用jsoup解析网页数据,从网络获取歌曲列表,同时实现歌曲和歌词下载到手机本地的功能。 4、通知栏提醒,实现仿QQ音乐播放器的通知栏功能. 涉及的技术有: ...
首先,通过Jsoup获取img标签的src属性,然后使用HTTP请求下载图片并保存到本地。 7. **错误处理和重试机制**:在实际应用中,考虑到网络问题,可能需要实现错误处理和重试机制,以应对网络延迟或失败的请求。 8. *...
2、利用硬件加速感应器,摇动手机实现切换歌曲的功能 3、利用jsoup解析网页数据,从网络获取歌曲列表,同时实现歌曲和歌词下载到手机本地的功能。 4、通知栏提醒,实现仿QQ音乐播放器的通知栏功能. 涉及的技术有: ...
5. **连接功能**:jsoup不仅限于解析本地文件,它还可以直接从URL加载HTML内容。`Jsoup.connect(url).get()`可以建立HTTP连接并获取网页内容。 6. **形式化输出**:如果需要将HTML输出为格式化的字符串,可以使用`...
3、利用jsoup解析网页数据,从网络获取歌曲列表,同时实现歌曲和歌词下载到手机本地的功能。 4、通知栏提醒,实现仿QQ音乐播放器的通知栏功能. 涉及的技术有: 1、jsoup解析网络网页,从而获取需要的数据 2、android...