八爪鱼·云采集网络爬虫软件
www.bazhuayu.com
public class HttpClientTest {
public static void main(String[] args) throws URISyntaxException, IOException {
String url = \; //请求路径
//构造路径参数
List
nameValuePairList.add(new
BasicNameValuePair(\,\)); nameValuePairList.add(new
BasicNameValuePair(\,\));
//构造请求路径,并添加参数 URI uri = new
URIBuilder(url).addParameters(nameValuePairList).build();
//构造Headers
List
BasicHeader(HttpHeaders.ACCEPT_ENCODING,\)); headerList.add(new BasicHeader(HttpHeaders.CONNECTION, \));
八爪鱼·云采集网络爬虫软件
www.bazhuayu.com
//构造HttpClient
HttpClient httpClient =
HttpClients.custom().setDefaultHeaders(headerList).build();
//构造HttpGet请求
HttpUriRequest httpUriRequest =
RequestBuilder.get().setUri(uri).build();
//获取结果
HttpResponse httpResponse =
httpClient.execute(httpUriRequest);
//获取返回结果中的实体
HttpEntity entity = httpResponse.getEntity();
//查看页面内容结果
String rawHTMLContent = EntityUtils.toString(entity);
System.out.println(rawHTMLContent);
//关闭HttpEntity流
EntityUtils.consume(entity); } }
这种方式可以使我们一次性构造一个统一头部的HttpClient,后面所有的请求都可以使用带有这个Headers的HttpClient。非常简单方便。 3、将下载的网页解析,转换成结构化数据
上一个步骤介绍获取了 http://www.datalearner.com/blog_list 页面的HTML源码,但是这些源码是提供给浏览器解析用的,我们需要的数据其实是页面上博客的标题、作者、简介、发布日期等。我们需要通过一种方式来从HTML源码中解析出
八爪鱼·云采集网络爬虫软件
www.bazhuayu.com
这类信息并提取,然后存到文本或者数据库之中。在这篇博客中,我们将介绍使用Jsoup包帮助我们解析页面,提取数据。
Jsoup是一款Java的HTML解析器,可以直接解析某个URL地址,也可以解析HTML内容。其主要的功能包括解析HTML页面,通过DOM或者CSS选择器来查找、提取数据,可以更改HTML内容。Jsoup的使用方式也很简单,使用Jsoup.parse(String str)方法将之前我们获取到的HTML内容进行解析得到一个Documend类,剩下的工作就是从Document中选择我们需要的数据了。举个例子,假设我们有个HTML页面的内容如下:
通过Jsoup我们可以把上面的三篇博客的标题提取到一个List中。使用方法如下: 首先,我们通过maven把Jsoup引入进来
八爪鱼·云采集网络爬虫软件
www.bazhuayu.com
package org.hfutec.example;
import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.select.Elements; import java.util.ArrayList;import java.util.List; /*******
* created by DuFei at 2017.08.25 21:00 * web crawler example * ******/
public class DataLearnerCrawler {
public static void main(String[] args) {
List
//假设我们获取的HTML的字符内容如下
String html = \
class=\\\第一篇博客