IDと名前がない場合に、C#からWebフォーム上の要素(ハイパーリンク)をクリックする方法

.net c# hyperlink webbrowser-control winforms
IDと名前がない場合に、C#からWebフォーム上の要素(ハイパーリンク)をクリックする方法

過去2週間、私はある種の問題にこだわっています。

C#を使用していくつかのWebスクレーパーを開発しており、アプリケーションでWinForms WebBrowserコントロールを使用しています。 ブラウザで開かれたWebフォームに入力し、次のコードを使用して自動的に送信できます。

HtmlElement submitButton = document.GetElementById("Element_ID″);
submitButton.InvokeMember(“click”);

これまでのところすべて問題ありませんが、問題は、私がクリックしたいWebフォームにもう1つの要素があることですが、この要素にはidまたは名前がないため、この要素をクリックする方法がわかりません。

私は修士論文のためにそれを必要とするできるだけ早く私を助けてください。

(私は所与のウェブサイトで次のページの矢印ボタンをクリックします:http://www.gelbeseiten.de/yp/11//subscriberlist_pageAction.yp?sessionDataString=H4sIAAAAAAAAAI2PQU8CMRCFfw0XSEmns9128k5KongwGjFeSZftIqILbhcVf70NSgg3X-pbyXjLfvCFpqsbbIMpwbVRRuaBELKm6iew5T4gLFUpdmKpewJAGD8xV7JaxalfpdZX6mP31bH4WQfZblJehXcd2tGvr0WwbunVIKbYIZjjKmoa3atct4RSh-pA/S912oY4qhWzyjJkLvPZV4P4JetNFHYWOG2OoCH4pZlyU-pjWdhjS/LY2sp7-p1lLCLOGXwTLqpT1XSqOiXcpE3Xzw- pncUtGSDNp0ZZwR0we92TxSHjIX0x-pIQM-p0AZuciLl7M / kGE-pmcGjIOsvEpTB-pADJS0suGAQAA&page = 0&filterTrade =-&filterFunction =-&sortBy = sort_trade&availableLetters = ABCDEFGHIJKLMWPQRST

  2  1


ベストアンサー

過去に組み込みのWebBrowsersを使用して多くのWebスクレイパーを作成したことがあるので、適切な場所に来ました。

要素に名前がない場合は、コンテンツ、または名前が付けられた別の関連要素で要素を見つける必要があります。

  • 最初のインスタンスでは、階層を反復するヘルパーメソッドを作成しました
    要素内の特定のコンテンツを探します。

  • 2番目のオプションでは、名前付き要素を取得し、特定の
    目的の子のインデックス。

  • 両方の組み合わせ(特定の親を見つけてから子を探す
    適切なコンテンツで)

あなたの特定のウェブページの例では、_next page_アンカーには、検索可能な `” arrow next “`のクラスタイプがあります。

3


できますか

HtmlElement next_arrow =  document.GetElementsByTagName("a")
                               .Cast()
                               .Where(e => e.GetAttribute("class") == "arrow next")
                               .FirstOrDefault();
if (next_arrow != null)
{
     next_arrow.InvokeMember("click");
}

2


これは、「InvokeMember( “click”)」ではなく、「クリックをシミュレートする」だけのトリックです。

これは最初のページへのリンクです:

gelbeseiten.de/yp/11//subscriberlist_pageAction.yp?sessionDataString=H4sIAAAAAAAAAI2PQU8CMRCFfw0XSEmns9128k5KongwGjFeSZftIqILbhcVf70NSgg3X-pbyXjLfvCFpqsbbIMpwbVRRuaBELKm6iew5T4gLFUpdmKpewJAGD8xV7JaxalfpdZX6mP31bH4WQfZblJehXcd2tGvr0WwbunVIKbYIZjjKmoa3atct4RSh-pA/S912oY4qhWzyjJkLvPZV4P4JetNFHYWOG2OoCH4pZlyU-pjWdhjS/LY2sp7-p1lLCLOGXwTLqpT1XSqOiXcpE3Xzw-pncUtGSDNp0ZZwR0we92TxSHjIX0x-pIQM-p0AZuciLl7M/kGE-pmcGjIOsvEpTB-pADJS0suGAQAA&*page=0*&filterTrade=-&filterFunction= -&sortBy = sort_trade&availableLetters = ABCDEFGHIJKLMNOPQRSTUVW

page = 0を参照してください。次にクリックすると、リンクが表示されます-

gelbeseiten.de/yp/11//subscriberlist_pageAction.yp?sessionDataString=H4sIAAAAAAAAAI2PQU/DMAyFf00vmzLFdprE8gkmwTggEENcp3RNxxh0o-pmA8euJBlO1G0-p-pvCf58zNwUzW-pDKyQalSmckExl6DqJpKnPCEuVbDaYFUvBcEIFXgVu1Ws2nV6Xac-pZn89X5xFwoed2MvQbmI73rf1eL4L3SakFFsJOBpnzcJbte9W4hSI-pQ/S912oY4qhWz5LDSC992Dl/QR60ahPki2OZKeNfCgiba18oicmLV8lTcoS8t6BJ8zsHMo3yEU1VE1D1ZmWm7Tt-psXxtNwCMmjS4BhJ7oDAy72WR5CH/MT0l1HQEVa46QDK2Z/JsTyhcdIAWrZeGy8/k7LJ5YQBAAA-e&*page=1*&filterTrade =-&filterFunction =-&sortBy = sort_trade&availableLetters = ABCDEFGHIJKLMNOPQRSTUVW

今*ページ= 1 *

等々…​ 一般的に、「次へ」をクリックすると、「ページ=(x + 1)」「前へ」をクリックすることを意味します*「ページ=(x-1)*」を意味します。 そのため、要件に従って文字列を作成します。 これはurの問題に対処しますが、クエリ文字列とともに送信される他のデータもいくつかあり、それらも文字列に追加する必要があります。

0


タイトルとURLをコピーしました