如果您转到http://dota-trade.com/equipment?order=name并向下滚动,则可以看到如果向下滚动到页面底部,则会加载更多项目。以下代码从网页中获取所有链接并将其保存到文本文件中。现在它只抓住所有可见的链接。如何抓取所有链接,包括向下滚动时显示的链接?
如果您知道更好的方式来描述我的要求,请编辑我的帖子,您完全有权根据您的喜好编辑任何内容。谢谢。
using HtmlAgilityPack;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
WebClient wc = new WebClient();
var sourceCode = wc.DownloadString("http://dota-trade.com/equipment?order=name");
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(sourceCode);
var node = doc.DocumentNode;
var nodes = node.SelectNodes("//a");
List<string> links = new List<string>();
foreach (var item in nodes)
{
var link = item.Attributes["href"].Value;
links.Add(link.Contains("http") ? link : "http://dota-trade.com" +link);
Console.WriteLine(link.Contains("http") ? link : "http://dota-trade.com" + link);
}
System.IO.File.WriteAllLines(@"C:\Users\Public\WriteLines.txt", links);
}
}
}
附加信息:这是我从头到尾所做的一切:
我使用的是Microsoft Visual Studio Ultimate 2012 RTM。我安装了它(花了差不多2个小时)。我启动了Visual Studio 2012.然后单击“文件”,然后单击“新建项目”,然后单击“已安装 - >模板 - &gt; Visual C# - &gt; Windows - &gt;控制台应用程序”,然后按“确定”。应该出现一个名为Program.cs的新页面。将代码粘贴到窗口中,覆盖已存在的内容。下载HtmlAgilityPack。我从htmlagilitypack.codeplex.com获得了我的。现在点击“Project”然后点击“Add Reference”。弹出参考管理器后,单击“浏览”,然后单击弹出窗口右下角的“浏览”。导航到您下载的HtmlAgilityPack的Net45文件夹中的HtmlAgilityPack.dll。现在按“确定”并按F5。应该像魅力一样工作。 -
答案 0 :(得分:0)
using HtmlAgilityPack;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
WebClient wc = new WebClient();
var sourceCode = wc.DownloadString("http://dota-trade.com/equipment?order=name");
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(sourceCode);
var node = doc.DocumentNode;
var nodes = node.SelectNodes("//a");
List<string> links = new List<string>();
foreach (var item in nodes)
{
var link = item.Attributes["href"].Value;
links.Add(link.Contains("http") ? link : "http://dota-trade.com" +link);
}
int index = 1;
while (true)
{
sourceCode = wc.DownloadString("http://dota-trade.com/equipment?order=name&offset=" + index.ToString());
doc = new HtmlDocument();
doc.LoadHtml(sourceCode);
node = doc.DocumentNode;
nodes = node.SelectNodes("//a");
var cont = node.SelectSingleNode("//tr[@itemtype='http://schema.org/Thing']");
if (cont == null) break;
foreach (var item in nodes)
{
var link = item.Attributes["href"].Value;
links.Add(link.Contains("http") ? link : "http://dota-trade.com" + link);
}
index++;
}
System.IO.File.WriteAllLines(@"C:\Users\Public\WriteLines.txt", links);
}
}
}