Chcę złożyć login na stronie Reddit.com, przejść do określonego obszaru strony i wysłać komentarz. Nie widzę, co jest nie tak z tym kodem, ale nie działa, że żadna zmiana nie jest odzwierciedlona na stronie Reddit.Używanie Python i Mechanize do przesyłania danych formularzy i uwierzytelniania
import mechanize
import cookielib
def main():
#Browser
br = mechanize.Browser()
# Cookie Jar
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
# Browser options
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
# Follows refresh 0 but not hangs on refresh > 0
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
#Opens the site to be navigated
r= br.open('http://www.reddit.com')
html = r.read()
# Select the second (index one) form
br.select_form(nr=1)
# User credentials
br.form['user'] = 'DUMMYUSERNAME'
br.form['passwd'] = 'DUMMYPASSWORD'
# Login
br.submit()
#Open up comment page
r= br.open('http://www.reddit.com/r/PoopSandwiches/comments/f47f8/testing/')
html = r.read()
#Text box is the 8th form on the page (which, I believe, is the text area)
br.select_form(nr=7)
#Change 'text' value to a testing string
br.form['text']= "this is an automated test"
#Submit the information
br.submit()
Co jest nie tak z tym?
Spróbuj dodać sen trwający co najmniej 10 sekund. Powinieneś również sprawdzić (nie "View Source", ale "Inspect Element" w Chrome lub podobnym w FF) formularz w przeglądarce i porównać z pobranym HTML. Może mieć pola dynamicznie wypełniane przez JS. – TryPyPy
Nawiasem mówiąc, Reddit ma API, czy to nie działa lepiej? – TryPyPy
Hmm, pozwól mi spróbować dodać sen. Nie wiem, jak korzystać z interfejsu API, ponieważ nie ma dokumentacji do przesyłania komentarzy. – Parseltongue