[英]C# - How to get anchor of link using CSQuery
我获得了当前页面上的所有链接,然后寻找所需的链接,然后想要获得此链接的锚点(“ a”的打开和结束标记之间的文本)。 我尝试使用“ obj.GetAttribute(” innerText“)”,但是它返回一个空字符串。
WebClient client = new WebClient();
string htmlCode = client.DownloadString("http://mysite1.com");
CQ cq = CQ.Create(htmlCode);
foreach (IDomObject obj in cq.Find("a")){
string href = obj.GetAttribute("href");
if (href.IndexOf("mysite2.com") != -1){
//get the anchor of this link
}
}
终于解决了。
using CsQuery;
CQ cq = CQ.Create(htmlCode);
foreach (IDomObject obj in cq.Find("a")){
string linkAnchor = obj.InnerHTML;
}
但是俄语文本有问题。 在某些情况下(并非总是如此),俄语文本将作为unicode字符代码读取。 例如,所有俄语字符都是这样的“&#1013”。 所以我写了一个函数来解码俄语字符中俄语字符的这种表示形式。
private string DecodeFromUTFCode(string input){
input = input.Replace("&#", "");
StringBuilder decodedAnchor = new StringBuilder();
StringBuilder currentUnicodeNum = new StringBuilder();
bool isInNumber = false;
for (int i = 0; i <= input.Length - 1; i++){
if (Char.IsDigit(input[i])){
isInNumber = true;
}else{
isInNumber = false;
if (input[i] != ';') decodedAnchor.Append(input[i]);
}
if (isInNumber){
currentUnicodeNum.Append(input[i]);
}
if ((input[i] == ';') || (i == input.Length - 1)){
string decoded = char.ConvertFromUtf32(int.Parse(currentUnicodeNum.ToString()));
decodedAnchor.Append(decoded);
currentUnicodeNum.Clear();
}
}
return decodedAnchor.ToString();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.