私は、Wikipediaから幾つかの地理的データを取得する単純なスクレーパーを作成して、.NETテクノロジーとC#を学びたいと考えています。LINQ + XMLを使用してWebサイトをスクラブする
public IEnumerable<string> GetLinkToAllCountries()
{
return from node in XElement.Load(_URL.AbsoluteUri).Elements("body").Descendants()
where node.Name.LocalName == "a"
&& node.Parent.Name.LocalName == "td"
&& node.Parent.Parent.Name.LocalName == "tr"
&& node.Attribute("href") != null
&& node.Attribute("title") != null
select _URL.Scheme + "//" + _URL.Host + node.Attribute("href").Value;
}
これは正常に動作し、すべての国のWikiページへのリンクのリストを返します。
まず、私はthisウィキペディアのサイトからテーブルに国へのすべてのリンクを返します。このメソッドを作成しました。第二に、私は各国のページを訪問し、資本を取得したい。
私は似たような書きましたが、私はそれを動作させることはできません。
public IEnumerable<string> ListOfCapitals() {
var links = GetLinkToAllCountries();
return from link in links
from node in XElement.Load(link).Elements("body").Descendants()
where node.Name.LocalName == "a"
&& node.Parent.Name == "td"
&& node.Attribute("title") != null
select node.Attribute("title").Value;
}
それは首都をリストしていない、およびVisual Studioは、System.Threadingに、いくつかの組立ポインタを作るようです。私はたぶん作業負荷のために非同期のものを書くべきでしょうか(200のWebサイトを訪問し、それぞれからデータを取得しています)?もし私がここで何らかの規則に違反していなければ、そのアプローチについての一般的なフィードバックも大好きです。ありがとう!
非常に涼しい。これらの気の利いた並行した呼び出しと他の非同期呼び出しをさらに掘り起こす必要があります。あなたはプロセッサの時間のいくつかの要因の量の詮索を使用する部分で詳しく説明できますか? 明日あなたの解決策を試してみましょう! – Aphex