分享文章:网站更新的文章为什么不被收录?

优采云 发布时间: 2022-11-12 12:37

  分享文章:网站更新的文章为什么不被收录?

  网站更新文章为什么不收录?一个活跃的网站应该每天定时更新一些内容,这样才能有一个稳定的收录,而文章是网站的内容更新之一,但事实并非如此每天轻松坚持原创的内容。那么今天2898的小编就和大家聊聊伪原创这个话题。伪原创 是更新网站 的人最喜欢的方式,但有些人的 伪原创 被搜索引擎喜欢,但有些不被接受。为什么会有这么大的差异?

  

  1、伪原创的痕迹太明显了。一般 伪原创 是头尾变化或段落颠倒。其他人只要看过类似的,就会知道这个文章的内容。自然,用户停留时间短,搜索线索就会被归类为垃圾邮件。

  2. 网站 的权重较低。如果你羡慕一些大网站的伪原创改了标题,被收录排名很好,其实最重要的是他们有很高的影响力。一个高权重的网站 甚至伪原创 或采集 都会获得一个不错的排名,原因是因为他的权重高,搜索引擎已经对其非常信任。而你的之所以不是收录,是因为权重太低了。

  3、可读性不高。许多站长不知道如何分析可读性。作者给出了一个小技巧,就是通过统计工具来查询页面花费的时间。时间越长,内容对用户的可读性就越高,反之亦然。搜索引擎会以此来判断,尤其是有百度统计的网站。

  

  4、内容相似度高。既然是伪原创,那说明网上有这样的文章,而且也不多,之所以不是收录是因为搜银知知道有这个 文章文章 已经存在,所以不是 收录 你的。

  以上就是2898的小编总结的伪原创的内容不是收录的原因。一条一模一样的新闻,为什么收录里面有这么多收录搜索引擎,有的只是换了个标题,内容一模一样却还是收录,而且排名还不错,你是什么原因明白了?

  分享文章:ihaveadream丶的博客

  目录

  在项目中,当我们需要远程调用一个HTTP接口时,我们经常会用到RestTemplate类。该类是Spring框架提供的一个工具类。Spring官网是这样描述的:

  :具有同步模板方法 API 的原创 Spring REST 客户端。

  从上面的介绍我们可以知道:RestTemplate 是一个同步的 Rest API 客户端。下面介绍一下RestTemplate的常用功能。

  RestTemplate 使用简单

  RestTemplate 提供了一个高度封装的接口,让我们可以非常轻松地进行 Rest API 调用。常用方法如下:

  表:RestTemplate 的方法

  上述方法大致可分为三组:

  一般来说,使用第一组和第二组方法就足够了。

  创建休息模板

  @Bean

public RestTemplate restTemplate(ClientHttpRequestFactory factory) {

RestTemplate restTemplate = new RestTemplate(factory);

return restTemplate;

}

@Bean

public ClientHttpRequestFactory simpleClientHttpRequestFactory() {

SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();

factory.setReadTimeout(5000);

factory.setConnectTimeout(15000);

// 设置代理

//factory.setProxy(null);

return factory;

}

  创建 RestTemplate 时需要 ClientHttpRequestFactory。通过这个请求工厂,我们可以统一设置请求的超时时间,设置代理等一些细节。通过上面的代码进行配置后,我们就可以直接在代码中注入RestTemplate来使用了。

  有时我们还需要通过ClientHttpRequestFactory配置最大链接数,忽略SSL证书等,需要的时候可以自己查看代码设置。

  接口调用

  1.常用接口调用

  Map vars = Collections.singletonMap("hotel", "42");

// 通过 GET 方式调用,返回一个 String 值,还可以给 URL 变量设置值(也可通过 uriTemplateHandler 这个属性自定义)

String result = restTemplate.getForObject(

"https://example.com/hotels/{hotel}/rooms/{hotel}", String.class, vars);

String url = "http://127.0.0.1:8080/hello";

JSONObject param = new JSONObject();

//restTemplate 会根据 params 的具体类型,调用合适的 HttpMessageConvert 将请求参数写到请求体 body 中,并在请求头中添加合适的 content-type;

// 也会根据 responseType 的类型(本列子中是 JSONObject),设置 head 中的 accept 字段,当响应返回的时候再调用合适的 HttpMessageConvert 进行响应转换

ResponseEntity responseEntity=restTemplate.postForEntity(url,params,JSONObject.class);

int statusCodeValue = responseEntity.getStatusCodeValue();

HttpHeaders headers = responseEntity.getHeaders();

JSONObject body = responseEntity.getBody();

  2.添加标题和cookies

  有时候,我们需要在请求中给Head添加一个值或者通过cookie传递一些值给服务器,所以上面的调用形式不符合要求。

   UriComponents uriComponents = UriComponentsBuilder.fromHttpUrl("127.0.0.1:8080").

path("/test").build(true);

URI uri = uriComponents.toUri();

RequestEntity requestEntity = RequestEntity.post(uri).

// 添加 cookie(这边有个问题,假如我们要设置 cookie 的生命周期,作用域等参数我们要怎么操作)

header(HttpHeaders.COOKIE,"key1=value1").

// 添加 header

header(("MyRequestHeader", "MyValue")

accept(MediaType.APPLICATION_JSON).

contentType(MediaType.APPLICATION_JSON).

body(requestParam);

ResponseEntity responseEntity = restTemplate.exchange(requestEntity,JSONObject.class);

// 响应结果

JSONObject responseEntityBody = responseEntity.getBody();

  3.文件上传

  以上两栏基本可以涵盖我们平时开发的大部分功能。这是文件上传的另一个示例(RestTemplate 非常实用)。

  public Object uplaod(@RequestBody JSONObject params) throws Exception{

final String url = "http://localhost:8888/hello/m3";

// 设置请求头

HttpHeaders headers = new HttpHeaders();

headers.setContentType(MediaType.MULTIPART_FORM_DATA);

// 设置请求体,注意是 LinkedMultiValueMap

FileSystemResource resource1 = new FileSystemResource("D:\\dir1\\ss\\pic1.jpg");

FileSystemResource resource2 = new FileSystemResource("D:\\dir1\\ss\\pic2.jpg");

MultiValueMap form = new LinkedMultiValueMap();

form.add("file", resource1);

form.add("file", resource2);

<p>

form.add("param1","value1");

HttpEntity files = new HttpEntity(form, headers);

JSONObject s = restTemplate.postForObject(url, files, JSONObject.class);

return s;

}

</p>

  上面的代码上传了两张本地图片,通过下面的代码可以顺利接收。

  @RequestMapping("/m3")

public Object fileUpload(@RequestParam("file") MultipartFile[] files, HttpServletRequest request) throws Exception {

// 携带的其他参数可以使用 getParameter 方法接收

String param1 = request.getParameter("param1");

Response response = new Response();

if (files == null) {

response.failure("文件上传错误, 服务端未拿到上传的文件!");

return response;

}

for (MultipartFile file : files) {

if (!file.isEmpty() && file.getSize() > 0) {

String fileName = file.getOriginalFilename();

// 参考 FileCopyUtils 这个工具类

file.transferTo(new File("D:\\" + fileName));

logger.info("文件:{} 上传成功...",fileName);

}

}

response.success("文件上传成功");

return response;

}

  但是我们发现在上面的上传代码中,上传文件的类必须使用FileSystemResource。有时我们会遇到这种情况:文件会以InputStream的形式从文件服务中下载到内存中,这时使用FileSystemResource就不行了。

  当然,也可以用一个刁钻的方法:先把下载的InputStream保存到本地,再读取到FileSystemResource,上传后删除本地的临时文件。

  但我总觉得这种方法并不完美。最后发现有同事已经写了一个相关的实现。在这里直接使用。

  // 自己实现了一个 Resource

public class InMemoryResource extends ByteArrayResource {

private final String filename;

private final long lastModified;

public InMemoryResource(String filename, String description, byte[] content, long lastModified) {

super(content, description);

this.lastModified = lastModified;

this.filename = filename;

}

@Override

public long lastModified() throws IOException {

return this.lastModified;

}

@Override

public String getFilename() {

return this.filename;

}

}

  调整上传代码

   @PostMapping("/m3")

public Object m3(@RequestBody JSONObject params) throws Exception{

final String url = "http://localhost:8888/hello/m3";

// 设置请求头

HttpHeaders headers = new HttpHeaders();

headers.setContentType(MediaType.MULTIPART_FORM_DATA);

// 设置请求体,注意是 LinkedMultiValueMap

// 下面两个流从文件服务下载,这边省略(注意最后关闭流)

InputStream fis1 =

InputStream fis2 =

InMemoryResource resource1 = new InMemoryResource("file1.jpg","description1", FileCopyUtils.copyToByteArray(fis1), System.currentTimeMillis());

InMemoryResource resource2 = new InMemoryResource("file2.jpg","description2", FileCopyUtils.copyToByteArray(fis2), System.currentTimeMillis());

MultiValueMap form = new LinkedMultiValueMap();

form.add("file", resource1);

form.add("file", resource2);

form.add("param1","value1");

HttpEntity files = new HttpEntity(form, headers);

JSONObject s = restTemplate.postForObject(url, files, JSONObject.class);

return s;

}

  

  4.文件下载

  private InputStream downLoadVideoFromVod(String url) throws Exception {

byte[] bytes = restTemplate.getForObject(url, byte[].class);

return new ByteArrayInputStream(bytes);

}

  其他一些设置

  1.*敏*感*词*配置

  RestTemplate 还可以设置*敏*感*词*来做一些统一的处理。这个功能感觉类似于 Spring MVC 的*敏*感*词*。配置也很简单:

  class MyInterceptor implements ClientHttpRequestInterceptor{

@Override

public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {

logger.info("enter interceptor...");

return execution.execute(request,body);

}

}

   @Bean

public RestTemplate restTemplate(ClientHttpRequestFactory factory) {

RestTemplate restTemplate = new RestTemplate(factory);

MyInterceptor myInterceptor = new MyInterceptor();

List list = new ArrayList();

list.add(myInterceptor);

restTemplate.setInterceptors(list);

return restTemplate;

}

  2.ErrorHandler配置

  ErrorHandler 用于统一处理调用错误。

  public class MyResponseErrorHandler extends DefaultResponseErrorHandler {

@Override

public boolean hasError(ClientHttpResponse response) throws IOException {

return super.hasError(response);

}

@Override

public void handleError(ClientHttpResponse response) throws IOException {

HttpStatus statusCode = HttpStatus.resolve(response.getRawStatusCode());

if (statusCode == null) {

throw new UnknownHttpStatusCodeException(response.getRawStatusCode(), response.getStatusText(),

response.getHeaders(), getResponseBody(response), getCharset(response));

}

handleError(response, statusCode);

}

@Override

protected void handleError(ClientHttpResponse response, HttpStatus statusCode) throws IOException {

switch (statusCode.series()) {

case CLIENT_ERROR:

HttpClientErrorException exp1 = new HttpClientErrorException(statusCode, response.getStatusText(), response.getHeaders(), getResponseBody(response), getCharset(response));

logger.error("客户端调用异常",exp1);

throw exp1;

case SERVER_ERROR:

HttpServerErrorException exp2 = new HttpServerErrorException(statusCode, response.getStatusText(),

response.getHeaders(), getResponseBody(response), getCharset(response));

logger.error("服务端调用异常",exp2);

throw exp2;

default:

UnknownHttpStatusCodeException exp3 = new UnknownHttpStatusCodeException(statusCode.value(), response.getStatusText(),

response.getHeaders(), getResponseBody(response), getCharset(response));

logger.error("网络调用未知异常");

throw exp3;

}

}

}

<p>@Bean

public RestTemplate restTemplate(ClientHttpRequestFactory factory) {

RestTemplate restTemplate = new RestTemplate(factory);

MyResponseErrorHandler errorHandler = new MyResponseErrorHandler();

restTemplate.setErrorHandler(errorHandler);

List

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线