문제

Ok Ive는이 코드를 얻었습니다.

public static string ScreenScrape(string url)
    {
        System.Net.WebRequest request = System.Net.WebRequest.Create(url);
        // set properties of the request
        using (System.Net.WebResponse response = request.GetResponse())
        {
            using (System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream()))
            {
                return reader.ReadToEnd();
            }
        }
    }

이제 텍스트를 필터링하여 div class = "comment"를 가져 오기 위해 일반 표현식을 사용하는 것 외에 다른 옵션이 있습니까? 아니면 그게 유일한 방법인가요?

감사해요

도움이 되었습니까?

해결책

당신은 그것을 사용해야합니다 HTML 민첩성 팩.

예를 들어:

var doc = new HtmlWeb().Load(url);
var comments = doc.Descendants("div")
                  .Where(div => div.GetAttributeValue("class", "") == "comment");

이것은 찾을 수 없습니다 <div class="OtherClass comment">; 당신이 그것을 찾고 있다면, 당신은 전화 할 수 있습니다 IndexOf.

다른 팁

htmlagilitypack은 패키지 일뿐 아니라 HTML 파일을 조작 할 수있는 패키지 일뿐입니다. 그러나 Phantomjs를 사용하여 셀레늄 웹 드라이버 스크랩 스크랩 스크랩을하려면 더 나은 솔루션입니다. Phantomjs는 헤드리스 웹 브라우저이므로 정말 빠릅니다. 또한 HTML 민첩성 팩에 비해 훨씬 더 나은 기능을 갖추고 있습니다. 짧은 것이 있습니다 강의 이 주제에 대해.

당신은 html을 구문 분석하기 위해 정규 표현식을 사용하지 않습니다 - 그들은 너무 복잡하기 때문에 작업에 잘못된 도구입니다.
HTML 파서를 사용해야합니다.
또한보십시오:C# HTML 파서를 찾고 있습니다

당신은 첫 번째 호출 포트가되어야합니다 HTML 민첩성 팩.

정규 표현식은 .NET이 아닌 언어에 대한 이러한 종류의 입력을 구문 분석하는 고전적인 방법입니다.

추가로,이를 XML 변형 (예 : XHTML)으로 정규화 할 수 있다면 XPath를 사용하여 쿼리를 사용하고 필요한 노드를 검색 할 수 있습니다.

당신이하고 싶지 않은 것은 자신의 파서를 구현하는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top