WatInを使用してハイパーリンク(リンク先のURL)のリストを収集しようとしています。私は使ってみました:
foreach (Link l in myIE.Links)
{
Links.Add(l.ToString());
}
string LinksCSV = string.Join(",", Links.ToArray());
richTextBox2.Text = LinksCSV;
リッチテキストボックス内のすべてのハイパーリンクを一覧表示しようとしていますが、上記でハイパーリンク名が返されたため、「リンク」が何度も表示されました。
さらに、「webpage.php?id =」を含み、その後に一意の番号が付いたURL/リンクのみをリストする必要があります。「webpage.php?id =」を含むものだけでフィルタリングされたスクレイプされたURLを返すにはどうすればよいですか?
更新:これは、他のサイトを使用して機能する更新されたテストですが、必要なサイトでは機能しません。以下のコードは機能します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WatiN.Core;
namespace ScrapeTest
{
class Program
{
[STAThread]
static void Main(string[] args)
{
IE ie = new IE();
ie.GoTo("http://www.freesound.org/browse/tags/organ/");
foreach (var currLink in ie.Links)
{
if (currLink.Url.Contains("sounds"))
{
Console.WriteLine("contains Edit in the link Url" + currLink.Url);
}
}
Console.ReadLine();
}
}
}
コードは正しいようですが、特定のURLとの相互作用とハイパーリンクが問題のようです。私がフォローしているサイトとハイパーリンクには機密情報が含まれているため、省略されています。
自分のサイトのメインページhttp://website.comを使用するとスクリプトが実行されるため、http://website.com/data.php?search =%22%22&catに送信する一意のページに関して問題が発生しています。 = 0 URLに.phpが含まれている可能性がありますか?また、役立つ場合は、以下に示すようにURLがページに保存されます。
td class="alt2">
<a align="center" href="data.php?id=111111">EDIT</a>
/td>
更新と解決策:何らかの理由で、Url.Containsメソッドを使用しようとすると問題が発生するようです。私がやったことは、すべてのスクレイプされたURLをリストに保存し、必要に応じてリストを1行ずつテストして、必要なURLを返すことです。手伝ってくれてどうもありがとう。