C#에서 Internet Explorer 프로세스를 열고 HTML 콘텐츠를이 브라우저로 보내고 '표시된'콘텐츠를 캡처 할 수 있습니까?C# Internet Explorer 및 HTML 태그 제거
다른 html 스트립 핑 메소드 (예 : HtmlAgilityPack)를 알고 있지만 위의 애비뉴를 살펴보고 싶습니다.
덕분에, LG
C#에서 Internet Explorer 프로세스를 열고 HTML 콘텐츠를이 브라우저로 보내고 '표시된'콘텐츠를 캡처 할 수 있습니까?C# Internet Explorer 및 HTML 태그 제거
다른 html 스트립 핑 메소드 (예 : HtmlAgilityPack)를 알고 있지만 위의 애비뉴를 살펴보고 싶습니다.
덕분에, LG
당신은 응용 프로그램에서 IE 호스트, 윈폼 및 WPF 모두 존재하는 WebBrowser 컨트롤을 사용할 수 있습니다. 그런 다음 컨트롤의 Source를 HTML로 설정하고 내용이로드 될 때까지 기다릴 수 있습니다 (HTML 다운로드가 완료 될 때 발생하는 Loaded 이벤트가 아니라 LayoutUpdated 이벤트 사용, 정렬되지 않은 모든 동적 JS 실행) Document 속성을 사용하여 HTML을 가져옵니다. 내가 그 신용을 수는 없지만, 위의 코드는 웹 페이지에서 전달에 웹 클라이언트 개체를 열고 해당 페이지에 대한 childLinks 모두 찾을 정규 표현식을 사용할 수 있도록
안녕하세요. 올바른 방향으로 나를 가르쳐 주셔서 감사합니다. Document 속성에서 보이는 내용을 어떻게 가져올 수 있습니까? thanks –
Document 속성은 WPF에서'object'로 정의되어 있지만 실제로 COM IHTMLDocument 객체를 감싸는 래퍼입니다. 디버거에서 단계적으로 살펴보면 HTMLBodyClass 객체를 포함하는 body와 같은 유용한 속성을 볼 수 있습니다. HTMLBodyClass 객체에는 자바 스크립트 뒤에 표시된 HTML 또는 innerText가 포함 된 'innerHTML' 속성이 있습니다. 태그가없는 텍스트 만 들어 있습니다. –
public List<LinkItem> getListOfLinksFromPage(string webpage)
{
WebClient w = new WebClient();
List<LinkItem> list = new List<LinkItem>();
try
{
string s = w.DownloadString(webpage);
foreach (LinkItem i in LinkFinder.Find(s))
{
//Debug.WriteLine(i);
//richTextBox1.AppendText(i.ToString() + "\n");
list.Add(i);
}
listTest = list;
return list;
}
catch (Exception e)
{
return list;
}
}
public struct LinkItem
{
public string Href;
public string Text;
public override string ToString()
{
return Href;
}
}
static class LinkFinder
{
public static List<LinkItem> Find(string file)
{
List<LinkItem> list = new List<LinkItem>();
// 1.
// Find all matches in file.
MatchCollection m1 = Regex.Matches(file, @"(<a.*?>.*?</a>)", RegexOptions.Singleline);
// 2.
// Loop over each match.
foreach (Match m in m1)
{
string value = m.Groups[1].Value;
LinkItem i = new LinkItem();
// 3.
// Get href attribute.
Match m2 = Regex.Match(value, @"href=\""(.*?)\""",
RegexOptions.Singleline);
if (m2.Success)
{
i.Href = m2.Groups[1].Value;
}
// 4.
// Remove inner tags from text.
string t = Regex.Replace(value, @"\s*<.*?>\s*", "",
RegexOptions.Singleline);
i.Text = t;
list.Add(i);
}
return list;
}
}
다른 사람이 정규 표현식을 만들었습니다. 이것이 당신이 찾고있는 것인지 확신 할 수 없지만 모든 HTML 컨텐트를 "잡아서"파일에 저장하기 만하면 "s"줄을 "string s = w"에 저장하면됩니다 .DownloadString (웹 페이지); " 파일에.
완벽하게 유효한 질문 IMO. –
'WebBrowser' 컨트롤을 사용할 수 있습니다. 'webBrowser.DocumentText = ....' –