HtmlAgilityPackを使ってツイートを元に戻すかどうかを確認する方法

c# filter html-agility-pack tweetr web-scraping

質問

私はデータ分析のためにユーザーのTwitterのつぶやきが欲しかった。そのために私はHtmlAgilityPackパッケージを使ってTwitterを掻き集め、 30のつぶやきを送ってきました。

私はツイートテキスト要素を認識し、すべてのツイートを取得しました。しかし、私はそれがツイートかリトワケットかを識別したい。どうやってやるの?

私はHTMLを分析しました。リツイートでは、 tweet-context with-icnクラスのtweet-context with-icn持つ要素があります。しかし、私がそのクラスのツイートを掻き集めると、ヌル例外がスローされます。なぜなら、すべてのツイートにそのクラスがあるわけではないからです。そして、それがリトウェットかどうかを知るために何をどのように掻き回すことができますか?

コード:

HtmlAgilityPack.HtmlWeb web = new HtmlAgilityPack.HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load("https://twitter.com/BarackObama");

var TweetsNode= doc.DocumentNode.SelectNodes("//tr[@class='tweet-container']").ToList();

foreach (var item in TweetsNode)
{
    var tweet = new Tweets
    {
        console.WriteLine(item.innertext);
    };
}

上のコードでは、バラクオバマのプロフィールのつぶやきを取得しようとしました。私はトップ30のつぶやきを取得しています。どちらがリツイートであるかをどのように認識できますか?
ありがとうございました。

受け入れられた回答

Twitter 101をスクレイピングする

  1. すべてのツイートをページから取得する(便利なテーブル<table class='tweet '>

    HtmlWeb p = new HtmlWeb();
    var doc = p.Load(@"https://twitter.com/dailygametips");
    var nodes = doc.DocumentNode.SelectNodes("//table[@class='tweet  ']");
    
  2. <span class='context'>ノードを調べて、このツイートがリトワットであることを示します。

    HtmlWeb p = new HtmlWeb();
    var doc = p.Load(@"https://twitter.com/dailygametips");
    var nodes = doc.DocumentNode.SelectNodes("//table[@class='tweet  ']");
    
  3. また、メッセージテキストが必要なので、次の<div class='tweet-text'>スクラップしてください:

    HtmlWeb p = new HtmlWeb();
    var doc = p.Load(@"https://twitter.com/dailygametips");
    var nodes = doc.DocumentNode.SelectNodes("//table[@class='tweet  ']");
    

追加のツイートコンテナクラス:

HtmlWeb p = new HtmlWeb();
var doc = p.Load(@"https://twitter.com/dailygametips");
var nodes = doc.DocumentNode.SelectNodes("//table[@class='tweet  ']");

あなたが言うように、これは本当にロケット科学ではありません。しかし、XPathとScrappingの基本的な原理を理解する必要があります。




ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ