1

mechanize を使用して Web サイトに自動的にログインし、数値を確認しようとしています。最初のページでは通常のユーザー名パスワード フォームを使用したと確信していますが、2 番目のログイン ページでは、アカウント作成時に選択したセキュリティの質問への回答から特定の文字を入力するよう求められます。

たとえば、お気に入りのペットの名前がガーフィールドで、2 番目、4 番目、5 番目の文字を要求された場合、a、f、i の 3 つの入力を入力し、そのフォームを投稿する必要があります。

ログインするたびに必要な文字を機械化して検索する最良の方法が何であるかはわかりません。フォームのソース コードの先頭には、これが含まれています。

<label for="frmentermemorableinformation1:strEnterMemorableInformation_memInfo1">Character 5 &#160;</label>

他の 2 文字をフォームに入力するための別の 2 つのラベルがあります。「文字」の最初の 3 つの出現を検索してから、文字を読み取るソースを機械化して読み取るのは良い考えだと思いました。テキストが表示される最初の 3 回はそれらのラベル用であるため、各出現の直後。

ソースコード全体を読むのではなく、これを行う簡単な方法はありますか?そのフォーム内のラベルまたはその他のショートカットを具体的に検索する機械化できますか? また、私はプログラミングの経験があまりないので、追加の詳細や説明は素晴らしいでしょう. ありがとうございました。

4

1 に答える 1

0

ソースコード全体を読むのではなく、これを行う簡単な方法はありますか?そのフォーム内のラベルまたはその他のショートカットを具体的に検索する機械化できますか?

私は Python の mechanize にはあまり詳しくありませんが、たとえば ruby​​ の mechanize では、html パーサーを使用して html を検索します。Python の html パーサーは BeautifulSoup または libxml です。BeautifulSoup はインストールが簡単です。libxml には多くの依存関係があり、インストールが困難な場合があります。BeautifulSoup の例を次に示します。

from BeautifulSoup import BeautifulSoup as bs
import re

soup = bs(open('html.html'))

form = soup.find(id="form1")

labels = form.findAll('label', text=re.compile("Character \d+") )
labels = labels[:3]

for label in labels:
    print(label.string)

--output:--
Character 5 &#160;
Character 6 &#160;
Character 7 &#160;
于 2013-06-30T00:47:51.470 に答える