我有一个网络爬虫,可从航空公司网站获取数据。
我希望程序在其各自的行中显示每个元素。
foreach (string url in urlList)
{
driver.Navigate().GoToUrl(url);
try
{
var DepAirport = driver.FindElementsByXPath("//td[@class='depdest']/div[@class='content']").ToList();
var ArrAirport = driver.FindElementsByXPath("//td[@class='arrdest']/div[@class='content']").ToList();
var DepTime = driver.FindElementsByXPath("//td[@class='depdest']/div[@class='content emphasize']").ToList();
var ArrTime = driver.FindElementsByXPath("//td[@class='arrdest']/div[@class='content emphasize']").ToList();
var Price = driver.FindElementsByXPath("//td[@class='fareselect standardlowfare']/div[@class='content']/label[@class='label seatsokfare']").ToList();
foreach(var da in DepAirport)
{
_entries.Add(new EntryModel { DepartureAirport = da.Text });
}
foreach (var aa in ArrAirport)
{
_entries.Add(new EntryModel { ArrivalAirport = aa.Text });
}
foreach (var dt in DepTime)
{
_entries.Add(new EntryModel { DepartureTime = dt.Text });
}
foreach (var at in ArrTime)
{
_entries.Add(new EntryModel { ArrivalTime = at.Text });
}
foreach (var p in Price)
{
_entries.Add(new EntryModel { Price = p.Text });
}
}
catch (Exception e)
{
}
它收集数据并将其显示在Grid上,但是结果如下所示:
答案 0 :(得分:0)
您需要设置所有EntryModel
属性。像这样:
for (var i = 0; i < DepAirport.Count; i++)
{
_entries.Add(new EntryModel
{
DepartureAirport = DepAirport[i].Text,
ArrivalAirport = ArrAirport[i].Text,
DepartureTime = DepTime[i].Text,
ArrivalTime = ArrTime[i].Text,
Price = Price[i].Text
});
}
问题在于,每次对_entries.Add(..
的调用都会创建一个新条目,并因此创建一个新行。但是,每一行只有一个属性集。