使用HttpClient 、Jsoup的爬虫获取指定网页内容以及下载图片

news/2024/7/19 10:51:30 标签: android, 爬虫

HttpClient:读取指定URL网页内容 ;

Jsoup:解析所要的页面数据;

public static String getHtmlByUrl(String id) {
		if (id != null && !id.equals("")) {
			String html = null;
			String userAgent = "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36";
			String url = "https://movie.douban.com/celebrity/" + id + "/";
			HttpClient httpClient = new DefaultHttpClient();
			try {
				Thread.sleep(4000);
				HttpGet httpget = new HttpGet(url);
				httpget.setHeader("User-Agent",userAgent);
				HttpResponse responce = httpClient.execute(httpget);
				int resStatu = responce.getStatusLine().getStatusCode();
				if (resStatu == HttpStatus.SC_OK) {
					HttpEntity entity = responce.getEntity();
					if (entity != null) {
					html = EntityUtils.toString(entity);
							Document document = Jsoup.parse(html);
						Element wapElement = document.getElementById("wrapper");
						Element contentElement = wapElement.getElementById("content");
						String imgSrc = contentElement.getElementById("headline").select("a").attr("href");
						Log.d(TAG, "getHtmlByUrl: "+imgSrc);
						return imgSrc;
					}
				}
			} catch (Exception e) {
				e.printStackTrace();
			} finally {
				httpClient.getConnectionManager().shutdown();
			}

		}
		return null;
	}

解析豆瓣网页并获取电影海报下载并存到指定目录

public String setImage(String path, String imageName) {
		try {
			// 把传过来的路径转成URL
			URL url = new URL(path);
			// 获取连接
			HttpURLConnection connection = (HttpURLConnection) url.openConnection();
			// 使用GET方法访问网络
			connection.setRequestMethod("GET");
			// 超时时间为10秒
			connection.setConnectTimeout(10000);
			if (connection.getResponseCode() == 200) {
				InputStream inputStream = connection.getInputStream();
				// 使用工厂把网络的输入流生产Bitmap
				Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
				String imgePath = saveImageDish(bitmap, imageName);
				inputStream.close();
				return imgePath;
			} else if (connection.getResponseCode() == 429) {
				Thread.sleep(1000);
				setImage(path, imageName);
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
		return "";
	}
// 将图片保存到本地
	private String saveImageDish(Bitmap bitmap, String imageName) {
		try {
			File files = new File(SystemState.MovieImagePath);
			if (!files.exists()) {
				files.mkdir();
			}
			File file = new File(files, imageName + ".jpg");
			FileOutputStream objct = new FileOutputStream(file);
			bitmap.compress(Bitmap.CompressFormat.JPEG, 100, objct);
			objct.close();
			return StringUtil.MOVIE_IMAGE + file.getName();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "";
	}


http://www.niftyadmin.cn/n/1722850.html

相关文章

基于rtmp+nginx 、vlc实现FFmpeg推流与wpf端拉流

这周在研究基于rtmpnginx直播流的实现,现总结如下: 0.所需文件: 链接:https://pan.baidu.com/s/1U5gsNI8Rcl684l5gVL6swg 提取码:dli9 1.nginx部署 1.1将nginx_1.7.11.3_Gryphon.zip解压,启动nginx.bat文件…

AndroidStudio-Windows默认快捷键

CtrlG 输入行号(定位行) CtrlD 在当前行下方复制一行; CtrlY 删除当前行; CtrlE 查看最近打开的文件; CtrlN 查看类名,文件名&#xff1…

技术笔记: 如何打造世界级的安全区块链平台

“比原链是一种多元比特资产的交互协议,运行在比原链区块链上的不同形态的、异构的比特资产(原生的数字货币、数字资产)和原子资产(有传统物理世界对应物的权证、权益、股息、债券、情报资讯、预测信息等)可以通过该协…

单片机控制无缘蜂鸣器和led闪烁_单片机蜂鸣器的控制程序与驱动电路图

点击箭头处“蓝色字”,关注我们哦!!更多推荐声光控制节电开关电路设计51单片机制作简易电风扇定时控制器A/D转换电路图大全什么是运放的正反馈?为什么我国要选用50Hz的交流电?而不是5Hz或400Hz呢?单片机IO口…

union all会影响性能吗_哪些因素会影响四氟垫片的性能?

四氟垫片是一种坚硬的,紧缩大,三维空间易成形。可以镶嵌进微细裂纹和损害处补裂堵漏,尤其是在耐酸、耐碱,防侵蚀及非金属设施。大口径器皿的连接范围成效突出,可以有效的保护脆性材料的安装连接。而且它还可以补偿和平…

Android 使用ImageView的setImageLevel和level-list实现电影星级评价星级的显示

为了ImageView设置很多不同图片以表示某种应用状态,如果每次都一一的通过ImageView设置图片的src来达到这一目的,实在是太过于繁琐,且维护和管理起来不便。因此,引入ImageView的setImageLevel和level-list实现这一目的。 电影有五…

合辑:CDQ分治

听考拉的主人说CDQ分治是她考NOI的时候现yy出来的,太强了Orz CDQ分治主要是一种思想,用来处理离线的问题。 学长说可以优化DP,但我觉得适用面还蛮窄的,主要还是处理序列问题,最主要的应该就是偏序。 CDQ分治的主要思想…

抽屉效果_【Flutter】底部抽屉效果简单实现

代码实现一个从底部点击弹出的,点击关闭的抽屉效果:import package:flutter/material.dart;// This widget is essentially the backdrop itself.class BackdropDemo extends StatefulWidget { override _BackdropDemoState createState() > _Backd…