すべてのhtmlタグ間のすべての単語の取得に関するスタックオーバーフローに関するいくつかの投稿を確認しました! それらのすべてが私を混乱させました!単一のタグに対して特に正規表現を推奨する人もいれば、解析手法について言及する人もいます! 基本的にウェブクローラーを作ろうとしています!そのために、プログラムに取得したリンクの html を文字列で取得しました。データ文字列に保存したhtmlからリンクも抽出しました! 今、文字列から抽出したすべてのリンクのページで、深さをクロールして単語を抽出したい! 2つの質問があります!タグと Java スクリプトを無視して、各 Web ページの単語を取得するにはどうすればよいですか? 第二に、リンクを再帰的にクロールするにはどうすればよいですか??
これは、文字列でhtmlを取得する方法です:
public void getting_html_code_of_link()
{
string urlAddress = "http://google.com";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlAddress);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
Stream receiveStream = response.GetResponseStream();
StreamReader readStream = null;
if (response.CharacterSet == null)
readStream = new StreamReader(receiveStream);
else
readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));
data = readStream.ReadToEnd();
response.Close();
readStream.Close();
Console.WriteLine(data);
}
}
そして、これは私が与えるURLからリンク参照を抽出する方法です:
public void regex_ka_kaam()
{
StringBuilder sb = new StringBuilder();
//Regex hrefs = new Regex("<a href.*?>");
Regex http = new Regex("http://.*?>");
foreach (Match m in http.Matches(data))
{
sb.Append(m.ToString());
if (http.IsMatch(m.ToString()))
{
sb.Append(http.Match(m.ToString()));
sb.Append(" ");
//sb.Append("<br>");
}
else
{
sb.Append(m.ToString().Substring(1, m.ToString().Length - 1)); //+ "<br>");
}
}
Console.WriteLine(sb);
}