2011-05-05 6 views
2

QWebKit에서 QWebPage를 사용하여 전체 URL이있는 태그의 모든 href 속성을 나열하려고합니다.QWebPage에서 전체 href 목록 가져 오기

QWebElementCollection collection = webPage->mainFrame()->findAllElements("a"); 
foreach (QWebElement element, collection) 
{ 
    QString href = element.attribute("href"); 
    if (!href.isEmpty()) 
    { 
     // Process 
    } 
} 

을하지만 문제는 HREF 전체 URL 그냥 페이지, 전면 /과 URL, 또는 전면에서 ../와 URL이 될 수있다 : 지금이 순간, 나는이 작업을 수행. 이러한 모든 다른 URL을 구문 분석하여 QString 또는 QUrl에서 전체 URL을 생성 할 수 있습니까?

답변

3

QWebFrame에는 페이지의 URL을 확인할 수 있도록 도와주는 Qurl 개체를 제공하는 baseUrl이라는 함수가 있습니다.

URL을 사용하여 별도의 QUrl (href에서 작성)을 사용하여 해결 된 함수를 호출 할 수 있습니다. URL이 상대 URL 인 경우 해결 된 절대 URL로 변환됩니다. 친척이 아닌 경우 수정하지 않고 반환합니다.

QUrl baseUrl = webPage->mainFrame()->baseUrl(); 

QWebElementCollection collection = webPage->mainFrame()->findAllElements("a"); 
foreach (QWebElement element, collection) 
{ 
    QString href = element.attribute("href"); 
    if (!href.isEmpty()) 
    { 
     QUrl relativeUrl(href); 

     QUrl absoluteUrl = baseUrl.resolved(relativeUrl); 

     // Process 
    } 
} 
+0

당신은 또한 QString으로 전체 URL을 반환 QUrl에로 .toString()를 호출 할 수 있습니다

다음은 제공된 코드를 기반으로 (검증되지 않은) 예입니다. – jsherer

+0

그것은 훌륭합니다, 고마워요! –

관련 문제