반응형
html 페이지의 모든 링크를 가져오시겠습니까?
저는 작은 취미 프로젝트를 하고 있습니다.나는 이미 url을 얻고, 헤더를 다운로드하고, mime 유형/콘텐츠 유형을 반환하기 위한 코드를 작성했습니다.
그러나, 이 전 단계는 태그 내부 및 따옴표와 같은 페이지의 모든 URL 내용을 검색해야 합니다.
...
<link rel='shortcut icon' href="/static/favicon.ico" type="image/x-icon" />
...
즐겨찾기 링크를 찾을 수 있습니다.
.net 라이브러리에 도움이 되는 것이 있습니까? 아니면 이것이 regex의 경우가 되어야 합니까?
Html Agility Pack을 사용하고 싶습니다.
다음은 페이지의 모든 링크를 찾는 방법에 대한 예제 페이지의 직접적인 예입니다.
HtmlWeb hw = new HtmlWeb();
HtmlDocument doc = hw.Load(/* url */);
foreach(HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
{
}
HTML 민첩성 팩을 사용해야 합니다.
예:
var doc = new HtmlWeb().Load(url);
var linkTags = doc.DocumentNode.Descendants("link");
var linkedPages = doc.DocumentNode.Descendants("a")
.Select(a => a.GetAttributeValue("href", null))
.Where(u => !String.IsNullOrEmpty(u));
BCL에 내장된 것은 없지만 다행히 HTML 민첩성 팩을 사용하여 이 작업을 매우 간단하게 수행할 수 있습니다.
구체적인 문제에 대해서는 HtmlAgilityPack을 사용하여 html 조각에서 링크를 쉽게 추출하기를 참조하십시오.
private List<string> ExtractAllAHrefTags(HtmlDocument htmlSnippet)
{
List<string> hrefTags = new List<string>();
foreach (HtmlNode link in htmlSnippet.DocumentNode.SelectNodes("//a[@href]"))
{
HtmlAttribute att = link.Attributes["href"];
hrefTags.Add(att.Value);
}
return hrefTags;
}
Regex는 어때요?
<(a|link).*?href=(\"|')(.+?)(\"|').*?>
깃발을 들고IgnoreCase그리고.SingleLine
systemtextregularexpressions.com regex.dll의 데모를 참조하십시오.
언급URL : https://stackoverflow.com/questions/2248411/get-all-links-on-html-page
반응형
'programing' 카테고리의 다른 글
| 크로스 작동과 아우터 작동 속도 차이 (0) | 2023.09.03 |
|---|---|
| 기본값 '지금'으로 타임스탬프 열을 만드는 방법은 무엇입니까? (0) | 2023.09.03 |
| 토큰은 짧은 기간의 토큰이어야 하며 합리적인 기간이어야 합니다. (0) | 2023.09.03 |
| C++에서 문자열 상수에서 'char*'(으)로 더 이상 사용되지 않는 변환입니다. (0) | 2023.09.03 |
| PowerShell 보안 및 파일 액세스 문제를 이해하는 데 도움이 필요합니다. (0) | 2023.09.03 |