我想知道如何检查超链接文本和链接存在于URL或不使用c#
本文关键字:URL 存在 链接 文本 何检查 想知道 超链接 检查 | 更新日期: 2023-09-27 18:06:25
我想创建一个工具,可以帮助我检查一个链接和它的文本是否存在于网页或不使用c#…也想知道如果链接是dofollow或nofollow。这里的例子是一个wiki站点的链接https://en.wikipedia.org/wiki/Main_Page
你可以在文章正文中看到很多链接文本,比如艺术,历史等。我想检查"艺术"链接文本是否存在与正确的超链接(https://en.wikipedia.org/wiki/Portal:Arts),如果它是nofollow或dofollow。我要创建一个工具,所以请帮助我。
该项目的主要思想是监控在线文章中的链接文本及其链接,无论它是否存在或被某人删除。还要知道是dofollow还是nofollow
我不确定你所说的nofollow或dofollow是什么意思,但这里有一个快速的代码示例来迭代网页上的链接。这应该是一个很好的开始。如果你正在寻找一些更健壮的东西,你可以看看HTML敏捷包。使用起来有点复杂,但是你可以得到网页的DOM视图。
由于这是使用WebBrowser
控件,因此确保包含System.Windows.Forms
引用。如果您必须使用不允许Forms对象的项目类型,则可以使用WebClient
或WebRequest
,但这两种类型都需要更多的努力才能工作。
static void CheckLink() {
WebBrowser wb = new WebBrowser();
wb.DocumentCompleted += wb_DocumentCompleted;
//Pass FireFox as user agnent to prevent getting Mobile site
wb.Navigate("https://en.wikipedia.org/wiki/Main_Page",null ,null,"User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0");
}
static void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
WebBrowser wb = (WebBrowser)sender;
String html = wb.DocumentText;
//find BODY tag
int BodyPosition = html.ToUpper().IndexOf("<BODY");
int Position = html.ToUpper().IndexOf("<A HREF", BodyPosition);
while (Position > -1) {
int BeginUrlPosition = html.IndexOf("'"", Position);
int EndUrlPosition = html.IndexOf("'"", BeginUrlPosition + 1);
String link = html.Substring(BeginUrlPosition+1, EndUrlPosition - BeginUrlPosition -1);
//Do Somthing with found link
//Look for next Link
Position = html.ToUpper().IndexOf("<A HREF", EndUrlPosition);
}
}