Мне нужны твиты Twitter для пользователя для анализа данных. Для этого я использовал пакет HtmlAgilityPack для очистки Twitter, и он дает мне 30 лучших твитов.
Я узнал твит-текст и получил все твиты. Но я хочу определить, является ли это чириканье или ретвит. Как я могу это сделать?
Я проанализировал HTML. В retweet будет элемент, имеющий класс tweet-context with-icn
. Но когда я очищаю твит на этом классе, он выдает исключение null, потому что не все твиты будут иметь этот класс. Затем, основываясь на том, что и как я могу царапать, чтобы узнать, является ли это retweet или нет?
Код:
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 лучших твитов. Как я могу узнать, какой из них переплетается?
Спасибо.
Получите все твиты со страницы (которая поставляется в удобных таблицах <table class='tweet '>
)
HtmlWeb p = new HtmlWeb();
var doc = p.Load(@"https://twitter.com/dailygametips");
var nodes = doc.DocumentNode.SelectNodes("//table[@class='tweet ']");
Посмотрите в узлах для <span class='context'>
чтобы указать, что этот твит является retweet.
List<Tweet> tweets = new List<Tweet>();
foreach (var node in nodes)
{
bool isRetweet = false;
var spanNode = node.SelectSingleNode(".//span[@class='context']");
if (spanNode != null && spanNode.InnerHtml.Contains("retweeted"))
{
isRetweet = true;
}
Мы также хотим текст сообщения, поэтому отмените следующий следующий <div class='tweet-text'>
:
string msg = string.Empty;
var msgNode = node.SelectSingleNode(".//div[@class='tweet-text']");
if (msgNode != null)
{
msg = msgNode.InnerText.Trim();
}
tweets.Add(new Tweet(msg, isRetweet));
}
Дополнительный класс контейнеров Tweet:
class Tweet
{
public Tweet(string message, bool isRetweet)
{
Message = message;
IsRetweet = isRetweet;
}
string Message { get; private set; }
bool IsRetweet { get; private set; }
}
Как вы говорите, это не настоящая ракетная наука. Но вам нужно понять основные принципы XPath и Scrapping.