Facebookにログインしてステータスを更新するプログラムをサイドプロジェクトとして書いています。プログラムにログインすることができました。ただし、「ここにステータスを入力してください」ボックスになるテキストエリアを選択するのに問題があります。Chromeで「Inspect Element」を使用すると、それが配置されているフォームを確認できますが、プログラムでフォームをリストしても、そのフォームがリストされていないようです...
import mechanize
import re
br = mechanize.Browser()
usernamecorrect = 0
while usernamecorrect == 0:
username = raw_input("What is the username for your Facebook Account? ")
matchmail = re.search(r'[\w.-]+@[\w.-]+', username)
if matchmail:
print matchmail.group()
usernamecorrect = 1
else:
print "That is not a valid username; please enter the e-mail address registered with your account.\n"
password = raw_input("What is the password for your account?")
print "Logging in..."
br.set_handle_robots(False)
br.open("https://www.facebook.com/")
br.select_form(nr = 0)
br['email'] = username
br['pass'] = password
br.submit()
raw_input("Login successful!")
print "Forms: \n"
for f in br.forms():
print f.name
完全な出力は次のとおりです。
What is the username for your Facebook Account? myemail@website.com
What is the password for your account? thisisapassword
Logging in...
Login successful!
Forms:
navSearch
None
Inspect Elements で Facebook のソースをもう一度調べてみたところ、「navSearch」は「Find People, Things, etc.」です。検索バー、および名前のないフォームがログアウト ボタンに関係しているように見えます。ただし、Inspect Elements は少なくとも 2 つのフォームを提供し、そのうちの 1 つにステータス更新ボックスがあります。JavaScript が原因かどうかを判断できませんでした (ステータス更新ボックスのコード ブロックは にカプセル化されていますが、navSearch フォームとログアウト フォームもカプセル化されています)。ログアウトフォームは別のdivにありますが、機械化にとってはそれほど問題にならないように感じます。私のコードに何か問題があるだけですか、それともまったく別のものですか?