我试图通过让每个循环为每个循环并行来提高我的webscraping应用程序的速度。
public List<MovieTVInformation> ViewMovies()
{
List<MovieTVInformation> AllFoundMovies = new List<MovieTVInformation>(100);
HtmlWeb website = new HtmlWeb();
HtmlDocument doc = website.Load("http://www.imdb.com/chart/moviemeter");
var MovieNames = doc.DocumentNode.SelectNodes("//*[@id='main']/div/span/div/div/div[3]/table/tbody/tr/td[2]").ToList();
var ImageLocation = doc.DocumentNode.SelectNodes("//*[@id='main']/div/span/div/div/div[3]/table/tbody/tr/td[1]/a").ToList();
var IMDBLinks = doc.DocumentNode.SelectNodes("//*[@id='main']/div/span/div/div/div[3]/table/tbody/tr/td[2]/a").ToList();
Parallel.ForEach(MovieNames, (name, state, index) =>
{
if (index > 0 && index < 99)
{
AllFoundMovies.Add(new MovieTVInformation());
var TempName = name.InnerText;
TempName = AdjustName(TempName, Convert.ToInt32(index));
AllFoundMovies[Convert.ToInt32(index)].Name = TempName;
}
});
return AllFoundMovies;
}
我的问题是每次给出负的错误索引错误时索引超出范围。我添加了一个IF语句,看看是否会阻止它超出范围(因为列表只有100个条目),但仍然没有成功。
任何人都可以让我知道我可能做错了什么,
感谢