如何使用C++从网页获取文本
How to get text from a web page using C++?
我正在尝试使用Poco从reddit的首页获取新闻。 我正在查看此pdf(http://pocoproject.org/slides/200-Network.pdf)以获取答案,但是在这一点上有点超出我的头,我不确定如何实现我的目标。 正如我所说,我试图简单地从 www.reddit.com 中获取新闻文章(特别是文章标题)。
到目前为止,我拥有的代码从reddit的首页抓取了所有html,并将其带到屏幕上:
#include <iostream>
#include "Poco/Net/SocketAddress.h"
#include "Poco/Net/StreamSocket.h"
#include "Poco/Net/SocketStream.h"
#include "Poco/StreamCopier.h"
using namespace std;
using namespace Poco::Net;
using namespace Poco;
int main(int argc, char *argv[])
{
SocketAddress sa("www.reddit.com", 80);
StreamSocket socket(sa);
SocketStream str(socket);
str << "GET / HTTP/1.1rn"
"Host: www.reddit.comrn"
"rn";
str.flush();
StreamCopier::copyStream(str, cout);
system("PAUSE");
}
看看上面提到的pdf,看起来我的答案可能在某个地方,但我仍在学习计算机网络和互联网协议,所以在这一点上大部分都在我的头顶上。
主要问题:有人可以帮我弄清楚如何将文章标题从 www.reddit.com 变成字符串或字符串数组吗?
为什么不抢 http://www.reddit.com/.rss,它比html简单得多?例如,要使用qt框架获取新闻标题:
class Foo : public QObject { Q_OBJECT
public:
Foo();
private slots:
void got_it(QNetworkReply* reply);
private:
QNetworkAccessManager* news_grabber;
};
Foo::Foo() {
news_grabber = new QNetworkAccessManager(this);
QObject::connect(news_grabber, SIGNAL(finished(QNetworkReply*)),
this, SLOT(got_it(QNetworkReply*)));
news_grabber->get(QNetworkRequest(QUrl("http://www.reddit.com/.rss")));
}
void Foo::got_it(QNetworkReply* reply) {
QDomDocument document;
std::vector<QString> items_storage;
document.setContent(static_cast<QIODevice*>(reply));
QDomNodeList items = document.elementsByTagName("item");
for (int i = 0; i < items.length(); i++)
items_storage.push_back(items.at(i).firstChildElement("title").text());
}
相关文章:
- 如何从QToolBox中动态创建的QLineEdit中获取文本
- C++文本文件的获取线
- 如何在QGridLayout中获取QComboBox的当前文本?
- 从两个 4x64 位整数数组中获取取模
- 如果给定了文本样式,如何获取特定文本的 QSize 对象
- 如何从第三方程序中通过鼠标悬停获取按钮文本
- 仅从qtextedit小部件中获取可见文本
- 从 XMLHttpRequest-Object 获取响应文本
- 从二进制文件中抓取文本时,为什么 xdg_vtnr=8 是我的结果
- 如何使用预处理器从源文件中获取一行文本
- 如何使用字符串操作来获取输入文本文件的某些部分
- 在MFC CListCtrl中获取项文本的索引
- 如何从CMFCEditBrowseCtrl获取路径文本
- 如何从网页中获取所有文本
- 从Windows应用程序的文本框中抓取文本
- 使用c++从活动窗口获取选定文本
- 在Cimg库中获取渲染文本的尺寸
- 将成员方法声明列表获取到文本编辑器中
- 点击QGraphicsItem获取带有文本的QRectF
- 使用libzip从.zip获取文件(文本除外)