java爬虫
核心:httpclient slf4j jsoup

slf4j 配置文件log4j.properties

log4j.rootlogger=DEBUG,A1
log4j.logger.cn.itcast = DEBUG
log4j.appender.A1=org.apche.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apche.log4j.patternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] -[%p] %m%n

1,步骤
首先获取CloseableHttpClient 对象(浏览器)
CloseableHttpClient client =HttpClients.createDefault();

获取网址HttpGet /HtppPost
HtppGet get=new HttpGet(url)

通过CloseableHttpClient 发送请求(execute)返回响应对象CloseableHttpResponse
CloseableHttpRespose respose =client.execute(get);

判断状态码。是否请求成功
respose.getStatusLine().getStatusCode()==200 既请求成功

获取响应体 EntityUtils解析
HttpEntity entity=res.getEntity();

EntityUtils.toString(entity,utf8)返回utf8编码的字符串

请求完后关闭response 和httpclient

2、带参数的请求

get请求传参

创建URIBuild对象
URIBuild build=new URIBuild(url)

设置参数

build.setParameter(param,value)

在创建请求对象时 HttpGet get=new HttpGet(build.build()) 即可设置参数

3、post请求传参

采用list集合封装表单中的参数
List<NameValuePair> params=new ArrayList<NmaeValuePair>();
params.add(new BasicNameValuePair(param,value))

创建表单的entity对象
UrlEncodedFromEntity formentity=new UrlEncodeFromEntity(params,utf8)

设置表单的entity到post请求对象中
HttpPost post=new HttpPost(url,formentity)

4、连接池

创建连接池
poolingHttpClientConnectonManager cm=new poolingHttpClientConnectonManager();

获取来连接

CloseableHttpClient httpclient=Httpclients.coutom().setConnectionManager(cm).build();

使用完后不要关闭httpclient

配置请求信息
RequestConfig config =RequestConfig.custom().setConnectionTimeout()//设置连接最长时间
.setConectionRequestTimeout()//设置获取连接最长时间
.setSocketTimeout()//设置数据传输最长时间
.build();//返回RequestConfig对象

通过不同的请求 将RequestConfig 设置进去 :HttpGet.setConfig();

JAVA 基于Jusup爬虫的更多相关文章

  1. 【网络爬虫】【java】微博爬虫(一):小试牛刀——网易微博爬虫(自定义关键字爬取微博数据)(附软件源码)

    一.写在前面 (本专栏分为"java版微博爬虫"和"python版网络爬虫"两个项目,系列里所有文章将基于这两个项目讲解,项目完整源码已经整理到我的Github ...

  2. Java豆瓣电影爬虫——抓取电影详情和电影短评数据

    一直想做个这样的爬虫:定制自己的种子,爬取想要的数据,做点力所能及的小分析.正好,这段时间宝宝出生,一边陪宝宝和宝妈,一边把自己做的这个豆瓣电影爬虫的数据采集部分跑起来.现在做一个概要的介绍和演示. ...

  3. Java开发搜索引擎爬虫

    package com.peidon.html; import java.io.BufferedReader; import java.io.File; import java.io.FileOutp ...

  4. Golang、Php、Python、Java基于Thrift0.9.1实现跨语言调用

    目录: 一.什么是Thrift? 1) Thrift内部框架一瞥 2) 支持的数据传输格式.数据传输方式和服务模型 3) Thrift IDL 二.Thrift的官方网站在哪里? 三.在哪里下载?需要 ...

  5. 基于scrapy爬虫的天气数据采集(python)

    基于scrapy爬虫的天气数据采集(python) 一.实验介绍 1.1. 知识点 本节实验中将学习和实践以下知识点: Python基本语法 Scrapy框架 爬虫的概念 二.实验效果 三.项目实战 ...

  6. Java基于opencv实现图像数字识别(五)—投影法分割字符

    Java基于opencv实现图像数字识别(五)-投影法分割字符 水平投影法 1.水平投影法就是先用一个数组统计出图像每行黑色像素点的个数(二值化的图像): 2.选出一个最优的阀值,根据比这个阀值大或小 ...

  7. Java基于opencv实现图像数字识别(四)—图像降噪

    Java基于opencv实现图像数字识别(四)-图像降噪 我们每一步的工作都是基于前一步的,我们先把我们前面的几个函数封装成一个工具类,以后我们所有的函数都基于这个工具类 这个工具类呢,就一个成员变量 ...

  8. Java基于opencv实现图像数字识别(三)—灰度化和二值化

    Java基于opencv实现图像数字识别(三)-灰度化和二值化 一.灰度化 灰度化:在RGB模型中,如果R=G=B时,则彩色表示灰度颜色,其中R=G=B的值叫灰度值:因此,灰度图像每个像素点只需一个字 ...

  9. Java基于opencv实现图像数字识别(二)—基本流程

    Java基于opencv实现图像数字识别(二)-基本流程 做一个项目之前呢,我们应该有一个总体把握,或者是进度条:来一步步的督促着我们来完成这个项目,在我们正式开始前呢,我们先讨论下流程. 我做的主要 ...

随机推荐

  1. python获取倒数第k个结点

    思路:定义快慢两个指针,快指针走k步后慢指针开始走,当快指针走到链表尾时快慢指针距离相隔k,倒数第K个结点就是慢指针所指的结点 # -*- coding:utf-8 -*- # class ListN ...

  2. volatile域浅析

    内存模型的相关概念 计算机中执行程序时,每条指令都是在CPU中执行,执行指令的过程必然会涉及到数据的读取和写入.而程序运行时的数据是存放在主存(物理内存)中,由于CPU的读写速度远远高于内存的速度,如 ...

  3. MySQL分区 (分区介绍与实际使用)

    分区介绍: 一.什么是分区? 所谓分区,就是将一个表分成多个区块进行操作和保存,从而降低每次操作的数据,提高性能.而对于应用来说则是透明的,从逻辑上看只有一张表,但在物理上这个表可能是由多个物理分区组 ...

  4. noSql 的应用场景简述

    选型一定要结合实际情况而不是照本宣科,比如: 企业发展之初,明明一个关系型数据库就能搞定且支撑一年的架构,搞一套大而全的技术方案出来 有一些数据条件查询多,更适合使用ElasticSearch做存储降 ...

  5. Mall电商实战项目发布重大更新,全面支持SpringBoot 2.3.0

    1. 前言 前面近一个月去写自己的mybatis框架了,对mybatis源码分析止步不前,此文继续前面的文章.开始分析mybatis一,二级缓存的实现. 附上自己的项目github地址:https:/ ...

  6. spring Boot面试题(2020最新版)

    概述 什么是 Spring Boot? Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提 ...

  7. RestTemplate get请求多参数 简单封装

    使用RestTemplate发送get请求时,如果有多个参数拼接起来会比较麻烦,在此做个简单的封装 public static void main(String[] args) { Map<St ...

  8. spark 笔记2

    一.Spark Shuffle 的发展 Spark 0.8及以前 Hash Based Shuffle Spark 0.8.1 为Hash Based Shuffle引入File Consolidat ...

  9. 软件定义网络实验记录④--Open vSwitch 实验——Mininet 中使用 OVS 命令

    一.实验目的 Mininet 安装之后,会连带安装 Open vSwitch,可以直接通过 Python 脚本调用 Open vSwitch 命令,从而直接控制 Open vSwitch,通过实验了解 ...

  10. Boost 信号与槽,获取槽函数返回值,使用占位参数传递信号携带的参数

    test1: 展示了, 1 信号与槽的基本使用,    2 要获取槽函数的返回值时的注意事项 #if 1 /* 参考blog https://www.cnblogs.com/jiayayao/p/62 ...