htmlAgilityPack을 사용하여 <a>태그의</a> 모든 내부 텍스트를 스크래핑합니다.

.net c# html-agility-pack web-scraping xpath

문제

http://search.freefind.com/siteindex.html?id=59478474&ltr=10240&fwr=0&pid=i&ics=1 링크에서 모든 단어를 고치고 싶습니다. 다음과 같이 시도했습니다.

HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load("http://search.freefind.com/siteindex.html?id=59478474&ltr=10240&fwr=0&pid=i&ics=1");
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//font[@class='search-index-font']//a");

if (nodes != null)
{

    foreach (HtmlNode n in nodes)
    {
         link = n.InnerText;
        my_link.Add(link);
        MessageBox.Show(link);
    }

}
else
    MessageBox.Show("no wordfound ");

내 expexed 출력을 좋아한다

HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load("http://search.freefind.com/siteindex.html?id=59478474&ltr=10240&fwr=0&pid=i&ics=1");
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//font[@class='search-index-font']//a");

if (nodes != null)
{

    foreach (HtmlNode n in nodes)
    {
         link = n.InnerText;
        my_link.Add(link);
        MessageBox.Show(link);
    }

}
else
    MessageBox.Show("no wordfound ");

그러나 그것은 작동하지 않았다 ?? 그것은 "아무 단어도 찾을 수 없습니다"라는 의미입니다. null을 반환한다는 의미입니다.이 경우 <a> 태그에서 모든 텍스트를 가져올 수 있습니까 ??? 아무도 내가 SelectNodes ( "")에 있어야한다고 말해 줄래 ???

수락 된 답변

<script> <font class='search-index-font'> 안에 <font class='search-index-font'> <script> 태그 다음에 텍스트 노드를 검색해야합니다 ( <a> 태그가 아니라). 이 xpath 표현은 트릭을 수행합니다.

//font[@class='search-index-font']/script/following-sibling::text()[1]

그리고이 코드 :

//font[@class='search-index-font']/script/following-sibling::text()[1]

필요한 텍스트 노드를 반환합니다.

//font[@class='search-index-font']/script/following-sibling::text()[1]

인기 답변

HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc =
    web.Load("http://search.freefind.com/siteindex.html?id=59478474&ltr=10240&fwr=0&pid=i&ics=1");
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//font[@class='search-index-font']");
string link = string.Empty;
if (nodes != null)
{
    foreach (var item in nodes)
    {
        var value =
        item.Elements("script").ToList();
        foreach (var items in value)
        {
            link += items.NextSibling.InnerText+ "\n";
        }
    }
    MessageBox.Show(link);
}
else
    MessageBox.Show("no wordfound ");



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.