я так и не понял, что нужно? Переходить по ссылкам или отсылать формы?
Если по ссылкам, то для получения всех ссылок страницы, метод типа такого:
C++ (Qt)
void Tools::getPageLinks(ListOfMappedStrings* listOfAllLinks, QWebView* webview)
{
QString strUrl;
QList<QWebFrame*> framesList(webview->page()->mainFrame()->childFrames()); //add parent frames
framesList.append(webview->page()->mainFrame()); //and main frame
QString resString = ""; //full data strings
const QString& jScript = "function getAllLinks(){var res;for (i=0; i<document.links.length; i++)"
"{res += document.links[i].innerHTML + '[DATALINK_SEPARATOR]' + document.links[i].href + '[LINKS_SEPARATOR]';}"
"return res.substring(0, (res.length - 17));}getAllLinks();";
QList<QVariant> list; //only for item contains control
foreach(QWebFrame* wFrame, framesList)
{
if (wFrame->childFrames().size() > 0)
{
//parsing child frames
foreach (QWebFrame* wFrameChild, wFrame->childFrames())
{
const QVariant& obj = wFrameChild->evaluateJavaScript(jScript);
if (!list.contains(obj))
{
list.append(obj);
resString += obj.value<QString>();
}
}
}
//main frame
const QVariant& obj = wFrame->evaluateJavaScript(jScript);
if (!list.contains(obj))
{
list.append(obj);
resString += obj.value<QString>();
}
}
resString.replace("null", "");
resString.replace("undefined", "");
QStringList strList = resString.split("[LINKS_SEPARATOR]");
if (strList.size() > 1)
{
foreach (QString strItem, strList)
{
const QStringList& subStrList = strItem.split("[DATALINK_SEPARATOR]");
QMap<QString, QString> map;
map.insert("text", subStrList[0].trimmed());
strUrl = subStrList[1].trimmed();
map.insert("url", strUrl);
listOfAllLinks->append(map);
}
}
}
Код можно несколько сократить, но давно писал и лень уже).
ListOfMappedStrings это QMap(QString, QString).
Имея контейнер ссылок, грузишь какие надо через load(). При этом, конечно, не забываешь про подмену referrer'a, других заголовков, сохранения и загрузки cookies и т.п.