`

通过url抓取第三方的内容

 
阅读更多
   大家看到标题都会想到用HttpURLConnection去处理,但是我想说的是我在实现时遇到的问题,之前用这段代码总是去忽略出现异常时的信息处理,总是处理成功的时候,当然这样做在抓取站带你内容时一般不会出问题,抓不到大不了就返回空喽;但是当抓取第三方api时,就出现问题了,人家api返回异常时都是以错误形式返回,光处理成功的api返回结果已经获取不到这异常信息了,导致自己也看不到原因,总以为是网络原因造成的,其实则不然。

   经过测试,第三方站点api返回成功信息是getInputStream(),而返回错误信息时是getErrorStream(),他们最终的解析代码都是一样的,所以我把解析代码从try模块中移到了finally模块中,在try和catch模块中分别获取成功的和异常的inputStream信息即可,最终都在finally里面解析,这样不但处理了成功信息和异常信息,而且还避免了重复代码

public static String fetchContentByUrl(String uri, Boolean isPostMethod) {
		if (StringUtils.isEmpty(uri)) {
			return null;
		}
		HttpURLConnection conn = null;
		InputStream in = null;
		try {
			URL u = new URL(uri);
			conn = (HttpURLConnection) u.openConnection();
			conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");
			if (isPostMethod) {
				conn.setRequestMethod("POST");
			}
			in = conn.getInputStream();
	       
		} catch (Exception e) {
			in = conn.getErrorStream();
			
		} finally {
			 try {
				 ByteArrayOutputStream bos = new ByteArrayOutputStream();
			     byte[] buf = new byte[4096];
			     int r;
			     while ((r = in.read(buf)) != -1) {
			         bos.write(buf, 0, r);
			     }
			     in.close();
			     conn.disconnect();
			     
		        final byte[] data = bos.toByteArray();
		        String jsonStr = new String(data);
		        return jsonStr;
		        
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return null;
	}
分享到:
评论

相关推荐

    java web网站常用抓取其他网站内容

    1. **HTTP请求**:在Java中,我们通常使用`HttpURLConnection`或第三方库如Apache HttpClient、OkHttp来发送HTTP请求。通过设置URL、请求方法(GET或POST)、Header参数等,可以定制化请求行为。 2. **HTML解析**:...

    JAVA实现的能抓取网站url提供分析等功能

    Java标准库中的`java.net.HttpURLConnection`或者第三方库如Apache HttpClient、OkHttp都可以实现这一功能。 2. **HTML解析**:获取到网页HTML后,我们需要解析HTML文档以提取URL。可以使用Jsoup库,它提供了简洁的...

    网络爬虫之简单链接抓取

    例如,`requests.get(url)`可以获取指定URL的网页内容。响应内容通常以字符串形式返回,我们可以将其存储到变量中,便于后续处理。 接下来,解析HTML文档是爬虫的关键步骤。BeautifulSoup是一个强大的库,用于解析...

    Java抓取URL/Email实例源码

    通过学习这个实例源码,开发者不仅可以掌握基础的网页抓取技术,还能了解到如何结合Java标准库和第三方库来提升效率和准确性。在实际应用中,还需要注意处理异常、设置超时、控制爬虫速度,以及可能需要的分布式爬虫...

    通过URL地址获取网页生成jpg图片

    这一步通常需要用到Webkit或者Gecko等浏览器引擎,但由于Java本身并不内置这些引擎,我们需要借助第三方库,如HtmlUnit或Headless Chrome(配合Selenium)。这里以HtmlUnit为例,它是一个无头的JavaScript支持的Web...

    从网上抓取指定URL源码的方案

    5. **处理验证码**:对于有验证码的网站,可以使用OCR技术或第三方服务来识别和输入验证码。 最后,值得注意的是,虽然网络爬虫在很多场景下有其用武之地,但必须遵守法律法规,尊重网站的版权,不进行非法数据采集...

    Java实现网页抓取

    Java中可以通过第三方库如proxy-vole来管理和切换IP。 9. **爬虫框架**:除了自定义实现外,Java也有一些成熟的爬虫框架,如WebMagic和Colt,它们封装了许多抓取和解析的细节,让开发更加便捷。 10. **法律法规**...

    C++网页抓取源码及例子亲测可用

    1. **网络库**:C++标准库本身并不包含网络编程的功能,因此开发者需要引入第三方库,如libcurl或Boost.Asio,来处理HTTP请求和响应。 2. **HTTP协议**:理解HTTP请求的基本结构是必要的,包括GET方法用于获取页面...

    delphi抓取网页数据

    通常,这些数据可能嵌套在HTML标签内,可以使用正则表达式、DOM解析(如MSXML或HTML Agility Pack)或第三方库如SuperObject来提取。对于JSON或XML格式的数据,使用相应的解析器会更方便。 4. **处理登录和验证码**...

    网络蜘蛛-自动抓取网上图片

    它通常使用HTML解析库,如JavaScript引擎(如.NET框架中的JsEngine)或者第三方库如HtmlAgilityPack,来解析网页内容。通过识别HTML中的`<img>`标签,网络爬虫可以找到网页上的图片链接。 其次,**URL管理**是确保...

    将网址解码为第三方公司和产品

    在IT行业中,尤其是在Web开发领域,理解网址的结构和如何从中提取信息至关重要。...通过学习和研究这个项目,开发者可以更好地理解如何在实际项目中解析和利用URL信息,尤其是与第三方服务和产品相关的部分。

    c#网页抓取

    C#可以通过第三方库如`FreeProxy`来获取和管理代理IP。 最后,考虑到网页抓取的持久化需求,我们可能需要将抓取的数据存储到数据库。C#可以配合Entity Framework等ORM工具轻松操作SQL Server、MySQL等数据库。 总...

    Delphi模拟搜索引擎蜘蛛抓取网页内容.rar

    Delphi中可以使用Html Agility Pack 或其他第三方库来解析HTML。 4. **链接提取**:在HTML解析过程中,蜘蛛会找到页面内的所有链接,并将它们添加到待抓取的URL队列中,以继续遍历互联网。 5. **去重处理**:为了...

    网页抓取例子

    - 在JSP中,你可以使用Java代码来实现HTTP请求,如使用`java.net.URL`和`java.io.BufferedReader`,或者使用第三方库如Apache HttpClient。 - 解析HTML文档时,可以利用`javax.xml.parsers.DocumentBuilderFactory...

    c# Url2Img

    可以使用`System.Net.WebUtility.HtmlDecode`进行HTML解码,或者使用第三方库如HtmlAgilityPack来解析DOM结构并提取图片链接。 5. **图片下载与处理**:获取到图片URL后,需要下载图片并可能进行缩略图生成。`...

    Python-Scrapy练习项目利用Scrapy抓取古诗

    在本项目中,我们将深入探讨如何使用Python的Scrapy框架来抓取古诗数据,包括唐诗和宋词,最终将这些数据存储为JSON格式。Scrapy是一个强大的、专为爬取网站并提取结构化数据而设计的工具,非常适合进行大规模的数据...

    网页图片抓取/批量保存

    如果图片来自第三方网站,应查看其版权声明,尊重原创者的权益,避免侵犯他人的知识产权。 为了提高效率,还可以结合使用图片去重技术。在大量下载图片后,可能会出现重复图片,可以利用图像识别算法(如哈希值比较...

    python抓取360百科词条

    学习python一周,学着写了一个爬虫,用来抓取360百科的词条,在这个过程中,由于一个小小的改动,程序出现一些问题,又花了几天时间研究,问了各路高手,都没解决,最终还是...第三方的BeautifulSoup(自行下载安装)

    批量抓取网站验证码

    获取到验证码图片URL后,可以使用Java的`HttpURLConnection`或第三方库如Apache HttpClient来下载图片。下载的图片可能需要预处理,例如调整大小、灰度化或二值化,以提高OCR识别的准确性。Java的`BufferedImage`类...

    python简单爬虫抓取新闻板块网页内容实例

    Python的内置模块如`csv`和`json`,或者第三方库如`pandas`和`sqlite3`,可以用来处理这些数据。 9. **网页动态加载**:如果网页内容是通过JavaScript动态加载的,常规的HTTP请求可能无法获取完整信息。这时可能...

Global site tag (gtag.js) - Google Analytics