2016-10-10 9 views
0

Webスクレイピングを実行していますが、すべての組み合わせを試しましたが、XPathはnullという値を返しています。Xpathがnullを返します。Webスクレイピング

角括弧を削除しましたが、//を追加しましたが、毎回nullを返します。 これは実際のXPathであり、自分のコードで使用しているフォーマット済みのものを添付しています。

//*[@id="agent_list_wrapper"]/div[2]/div[2]/div/div[1]/a 
//*[@id="agent_list_wrapper"]/div[2]/div[2]/div/div[3] 

以下は私のコードです。

private async Task<List<NameAndphone>> WebDateFromPage(int pagenum) 
{ 
    string url = "http://www.realtor.com/realestateagents/New-York_NY/photo-1"; 

    if (pagenum != 0) 
     url = "http://www.realtor.com/realestateagents/New-York_NY/photo-1/pg-" + pagenum.ToString(); 

    var doc = await Task.Factory.StartNew(() => web.Load(url)); 
    var name = doc.DocumentNode.SelectNodes("//*[@id=\"agent_list_wrapper\"]//div//div//div/div//a"); 
    var phone = doc.DocumentNode.SelectNodes("//*[@id=\"agent_list_wrapper\"]//div//div//div//div"); 
    if (name == null || phone == null) 
     return new List<NameAndPhone>(); 

    var names = name.Select(node => node.InnerText); 
    var phones = phone.Select(node => node.InnerText); 

    return names.Zip(phones, (name, phone) => new NameAndPhone() { Name = name, Phone = phone }).ToList(); 
} 
+1

実際にXMLファイルにxpathが存在することを確認できますか? XML文書のスニペットをpostaできますか? – Shredderroy

+1

あなたは正確に何を望んでいるのか詳しく教えてもらえますか?私はこれに新しいです。これについて多くのアイデアはありません。この点について私を助けることができれば非常に感謝します。 –

+0

私は自分のコードを編集しました。添付のウェブサイトから名前と電話番号を取得してください –

答えて

1

XPATHは正常に動作しているようです(ただし、データ自体はクリーニングが必要です)。テストデータについては、このURLに使用

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
doc.OptionFixNestedTags = true; 
doc.Load("data.xml"); 

var name = doc.DocumentNode.SelectNodes("//*[@id=\"agent_list_wrapper\"]//div//div//div/div//a"); 
var phone = doc.DocumentNode.SelectNodes("//*[@id=\"agent_list_wrapper\"]//div//div//div//div"); 


var names = name.Select(node => node.InnerText); 
var phones = phone.Select(node => node.InnerText); 

var result = names.Zip(phones, (n, p) => new { Name = n, Phone = p }).ToList(); 
//Result has 58 items 

:テストにこのコードを使用し、それはとても特異的であるためhttp://www.realtor.com/realestateagents/New-York_NY/photo-1/pg-1

enter image description here


を私はあなたのXPATH再考することをお勧めします構造に依存します。 itemprop="name"itemprop="telephone"の属性を使用してみてください。ウェブサイトのレイアウトを変更すると変更される可能性は低くなります

関連する問題