Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用C++;?_C++_Html_String_Sockets_Poco - Fatal编程技术网

C++ 如何使用C++;?

C++ 如何使用C++;?,c++,html,string,sockets,poco,C++,Html,String,Sockets,Poco,我正在尝试使用Poco从reddit的头版抓取新闻。我正在看这个pdf()来寻找答案,但这一点我有点不知所措,我不确定如何实现我的目标。正如我所说,我只是想从www.reddit.com上获取新闻文章(特别是文章标题) 到目前为止,我的代码从reddit的首页抓取了所有html,并将其放到屏幕上: #include <iostream> #include "Poco/Net/SocketAddress.h" #include "Poco/Net/StreamSocke

我正在尝试使用Poco从reddit的头版抓取新闻。我正在看这个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.1\r\n"
     "Host: www.reddit.com\r\n"
     "\r\n";
    str.flush();

    StreamCopier::copyStream(str, cout);

    system("PAUSE");
}
#包括
#包括“Poco/Net/SocketAddress.h”
#包括“Poco/Net/StreamSocket.h”
#包括“Poco/Net/SocketStream.h”
#包括“Poco/StreamCopier.h”
使用名称空间std;
使用名称空间Poco::Net;
使用名称空间Poco;
int main(int argc,char*argv[])
{   
SocketAddress sa(“www.reddit.com”,80);
流式插座(sa);
SocketStream str(socket);
str为什么不抓取,它比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());
  }
class Foo:public QObject{Q_OBJECT
公众:
Foo();
专用插槽:
void获得它(QNetworkReply*reply);
私人:
QNetworkAccessManager*新闻抓取器;
};
Foo::Foo(){
news_grabber=新的QNetworkAccessManager(此);
QObject::connect(新闻抓取器,信号(完成(QNetworkReply*)),
这个插槽(got_it(QNetworkReply*));
新闻抓取器->获取(QNetworkRequest(QUrl)http://www.reddit.com/.rss")));
}
void Foo::明白了(QNetworkReply*reply){
QDOM文件;
std::向量项存储;
文件.setContent(静态_cast(回复));
QDomNodeList items=document.elementsByTagName(“item”);
对于(int i=0;i
OK,阅读/获取HTML内容是一件事,解析它要困难得多。POCO提供了一个HTML文档模型AFAIR,我只是担心它是该库的商业部分之一:(…那么,你能使用Poco以外的东西吗?我想这真的取决于你需要它做什么。为什么不使用一些基本的字符串解析呢?字符串
这是我遇到的问题的一部分。因为我唯一能看到输出的机会是在
StreamCopier::copyream(str,cout)行中)当它将数据输出到控制台时,我需要找到一种方法将数据转换成字符串(我不知道怎么做,但相信我,我正在尝试)。老实说,我并不担心字符串解析,我已经做了很多次了。只是我需要将数据转换成字符串。我只是想我可能必须通过POCO库来完成这项工作,因此我提出了一个问题。谷歌搜索让我找到了SteamCopier.copyToString。你试过了吗?