Products
96SEO 2025-04-28 15:23 5
站长在利用火车头采集文章时,有时候采集的标题,或组合的标题,或AI生成的标题太长,那么在处理长标题时,我们可以仅仅通过用火车头自带的C#编写一个函数脚本来缩短标题就可以。常见的做法是限制标题的长度,逻辑就是读取标题的标点符号,来截取适当的长度。
需要注意的是,老版本的火车头采集器的C#版本比较低,编写脚本时注意兼容性。
以下是两个示例代码,具体不同看开头的注释:
示例一:
//火车头标题截取以逗号问号标点符号等,如果第一个符号不够8个字,就截取第二个符号之前
using System;
using SpiderInterface;
class LocoyCode {
public string Run(string content,ResponseEntry response)
{
char[] delimiters = { ',', ',', '?', '?', '(', '(', ' ', ':', '「',':', '-', '_', '!', '!', '|', ' ' };
string output = GetFirstLongString(content,delimiters);
return string.IsNullOrEmpty(output) ? content : output;
}
public static string GetFirstLongString(string input, char[] delimiters)
{
string output = "";
int startIndex = 0;
bool firstDelimiter = true;
for (int i = 0; i < input.Length; i++)
{
if(Array.IndexOf(delimiters,input[i])!=-1)
{
if(i-startIndex>=8 || (!firstDelimiter && i-startIndex > 0))
{
output = input.Substring(0, i);
break;
}
firstDelimiter = false;
startIndex=i+1;
}
}
if(string.IsNullOrEmpty(output) && input.Length>=8){
output = input;
}
return output;
}
}
示例二:
//火车头标题截取以逗号问号等,如果第一个符号不够8个字,就截取第一个符号之后第二个符号之前的
using System;
using SpiderInterface;
class LocoyCode {
public string Run(string content,ResponseEntry response)
{
char[] delimiters = { ',', ',', '?', '?', '(', '(', ' ', ':', ':', '-', '「', '!', '!', ' ' };
string output = GetFirstLongString(content,delimiters);
return string.IsNullOrEmpty(output) ? content : output;
}
public static string GetFirstLongString(string input, char[] delimiters)
{
string output = "";
int startIndex = 0;
bool firstDelimiter = true;
for (int i = 0; i < input.Length; i++)
{
if(Array.IndexOf(delimiters,input[i])!=-1)
{
if(i-startIndex>=8 || !firstDelimiter)
{
output = input.Substring(startIndex, i - startIndex);
break;
}
firstDelimiter = false;
startIndex=i+1;
}
}
if(string.IsNullOrEmpty(output) && input.Length>=8){
output = input;
}
return output;
}
}
如果你需要更多关于火车头脚本或插件方面的问题,请给我们留言或联系客服!
Demand feedback