используя питон для входа на booking.com - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь зайти на booking.com, чтобы загрузить данные о доходе от аренды. Форма имеет HTML-тег:

<form class="nw-signin" novalidate="">

Код Python:

import mechanize
from bs4 import BeautifulSoup
import urllib2 
import cookielib

cj = cookielib.CookieJar()
br = mechanize.Browser()
br.set_handle_robots(False)
br.set_cookiejar(cj)
br.open("https://account.booking.com/")

formcount=0
for frm in br.forms():  
  if str(frm.attrs["class"])=="nw-signin":
    break
  formcount=formcount+1
br.select_form(nr=formcount)
br.form['username'] = '1272897'
br.submit()

print br.response().read()

но я получаю ошибку:

FormNotFoundError                         Traceback (most recent call last)
<ipython-input-3-ee31ffcb0057> in <module>()
     15     break
     16   formcount=formcount+1
---> 17 br.select_form(nr=formcount)
     18 br.form['username'] = '1272897'
     19 br.submit()

C:\Users\kerss\Anaconda2\lib\site-packages\mechanize\_mechanize.pyc in select_form(self, name, predicate, nr, **attrs)
    666                     description.append('%s = %r' % (k, v))
    667             description = ", ".join(description)
--> 668             raise FormNotFoundError("no form matching " + description)
    669 
    670     def click(self, *args, **kwds):

FormNotFoundError: no form matching nr 0

Я много чищу голову здесь! Кто-нибудь может увидеть, где я иду не так?

Если я бегу

import mechanize
from bs4 import BeautifulSoup
import urllib2 
import cookielib

count = 0
cj = cookielib.CookieJar()
br = mechanize.Browser()
br.set_handle_robots(False)
br.set_cookiejar(cj)
br.open("https://account.booking.com/")
for form in br.forms():
    count = count +1
    print count

ничего не печатается, что указывает на

for form in br.forms():

никогда не соответствует действительности, поэтому на странице нет форм, но на странице есть форма!

...