:::tip
不知道为什么百度收录那么慢,提交sitemap已经一周了,貌似只有个主页,相反谷歌却已经有十来个链接了,再尝试每天API提交一次试试。
:::
简述
百度提供了相应的API收录提交接口,不知道作用大不大,反正试一下吧,sitemap提交了这么多天也没有动静,也没有更新。
sitemap将网站所有的链接都生成了,但是有一些链接是不太友好的,例如文章的链接,就要是文章的链接,不能标签,分类的链接也存在,打开之后,并不能直接看到文章的内容,还得要点一次文章,这个是不太好的。所以当用API提交时,应该排除掉自己不需要的链接,首先要拿到sitemap的内容,然后通过正则筛选到自己想要的链接,接着提交到API就行了。
例如,存在以下几种链接
1
2
3
4
5
|
https://srcrs.top/posts/2019/08/12/%E9%AB%98%E7%B2%BE%E5%BA%A6%E5%BF%AB%E9%80%9F%E5%B9%82%E6%A8%A1%E6%9D%BF.html
https://srcrs.top/posts/tags/bfs.html
https://srcrs.top/posts/categories/Note.html
|
只需要用一个正则公式就能够获取到自己想要的链接
1
|
https://srcrs.top/posts/[\d]{4}/[\d]{2}/[\d]{2}/.+.html
|
把这些链接组合成一个字符串,官网给的示例,我还是有点看不懂,post发送方式只会携带键值对的参数,看到别人的实现方式就是类似当作socket发送消息的方式,还是挺新奇的。索性就当作一个工具类拿来用了。
所需jar包
使用maven建立的一个项目,需要导入jsoup的包。
1
2
3
4
5
|
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.12.1</version>
</dependency>
|
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
public class App {
public static void main(String[] args) throws Exception {
Document doc = Jsoup.connect("sitemap.xml地址").get();
String str = doc.toString();
String pattern = "https://srcrs.top/posts/[\\d]{4}/[\\d]{2}/[\\d]{2}/.+.html";
Pattern regex = Pattern.compile(pattern);
Matcher m = regex.matcher(str);
String json = "";
while (m.find()) {
json = json + m.group() + "\n";
}
String url = "接口调用地址";
System.out.println(App.postTuiSong(url,json));
}
/**
* 发送请求的工具类
* @param url
* @param Parameters
* @return
*/
public static String postTuiSong(String url, String Parameters) {
String PostUrl = url;
if (null == PostUrl || Parameters.length() == 0) {
return null;
}
String result = "";
PrintWriter out = null;
BufferedReader in = null;
try {
//建立URL之间的连接
URLConnection conn = new URL(PostUrl).openConnection();
//设置通用的请求属性
conn.setRequestProperty("User-Agent", "curl/7.12.1");
conn.setRequestProperty("Host", "data.zz.baidu.com");
conn.setRequestProperty("Content-Type", "text/plain");
conn.setRequestProperty("Content-Length", "83");
//发送POST请求必须设置如下两行
conn.setDoInput(true);
conn.setDoOutput(true);
//获取conn对应的输出流
out = new PrintWriter(conn.getOutputStream());
//发送请求参数
out.print(Parameters.trim());
//进行输出流的缓冲
out.flush();
//通过BufferedReader输入流来读取Url的响应
in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
//}
} catch (Exception e) {
System.out.println("post推送出现异常!" + e);
e.printStackTrace();
} finally {
try {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
System.out.println("post推送结果:" + result);
return result;
}
}
|
maven.yml
github actions的运行配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
name: Java CI with Maven
on:
push:
schedule:
- cron: '0 22 * * *'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build with Maven
env:
URL_1: ${{ secrets.URL_1 }}
URL_2: ${{ secrets.URL_2 }}
run: |
cd bilibili
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt-get -f install
unzip chromedriver_linux64.zip
mvn compile exec:java -Dexec.mainClass="org.example.App" -Dexec.args="${URL_1} ${URL_2}"
|
参考链接
java实现百度资源平台主动提交链接