Mechanize Checkboxen

Django, Flask, Bottle, WSGI, CGI…
phoenixx592
User
Beiträge: 46
Registriert: Sonntag 25. Juni 2017, 16:41

Mechanize Checkboxen

Beitragvon phoenixx592 » Montag 26. Juni 2017, 18:37

Guten Tag da bin ich wieder,
Kurze Frage zur erläuterung wieso dieses Skript wieder nicht funktioniert. Da ich das Googleskript verstanden habe wollte ich eine Stufe höher steigen mit Mechanize. Das skript soll nun auf die seite http://www.proxy-liste.de gehen und mir die Proxys ausgeben.

Funktioniert mal wieder garnichts.

  1. import mechanize    #importiere das Modul
  2.  
  3. br = mechanize.Browser()    #Rufe den Browser auf
  4. br.set_handle_robots(False)
  5. br.addheaders = [('User-agent', 'Mozilla/5.0')] #Stelle die Headers auf Firefox
  6. br.open('http://www.proxy-listen.de/Proxy/Proxyliste.html')     #öffne die Seite
  7. br.select_form(nr=0)        # selectiere die erste Form
  8. br.find_control("filter_response_time_http").items[3].selected=True     # finde die checkbox "filter_response_time_http" setzte das Item auf nummer "3"
  9. br.submit() #bestätige
  10. print(br.getcode()) # gebe mir den vollen HTML CODE aus
  11.  
  12. print("finish")
Zuletzt geändert von Anonymous am Montag 26. Juni 2017, 19:40, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

Re: Mechanize Checkboxen

Beitragvon BlackJack » Montag 26. Juni 2017, 20:09

@phoenixx592: „Funktioniert mal wieder garnichts.“ ist keine sinnvolle Fehlerbeschreibung. Was *genau* funktioniert denn nicht? Gibt es eine Ausnahme? Dann bitte verraten welche und am besten den kompletten Traceback 1:1 kopieren. Oder verhält sich das nicht wie erwartet? Dann bitte verraten wie es sich verhält und wie das von den Erwartungen abweicht.
phoenixx592
User
Beiträge: 46
Registriert: Sonntag 25. Juni 2017, 16:41

Re: Mechanize Checkboxen

Beitragvon phoenixx592 » Montag 26. Juni 2017, 20:15

Code: Alles auswählen

Traceback (most recent call last):
  File "C:/Users/Admin/PycharmProjects/Maker/Proxy_choose.py", line 10, in <module>
    print(br.getcode())
  File "C:\Python27\lib\site-packages\mechanize\_mechanize.py", line 628, in __getattr__
    ".select_form()?)" % (self.__class__, name))
AttributeError: mechanize._mechanize.Browser instance has no attribute getcode (perhaps you forgot to .select_form()?)
BlackJack

Re: Mechanize Checkboxen

Beitragvon BlackJack » Montag 26. Juni 2017, 20:33

@phoenixx592: So ein `Browser` hat ja auch keine `getcode()`-Methode. Du möchtest das `Response`-Objekt vom `Browser` holen und darauf dann beispielsweise `get_data()` aufrufen.
phoenixx592
User
Beiträge: 46
Registriert: Sonntag 25. Juni 2017, 16:41

Re: Mechanize Checkboxen

Beitragvon phoenixx592 » Montag 26. Juni 2017, 21:39

Leichter gesagt als getan....

  1. import mechanize
  2.  
  3. br = mechanize.Browser()
  4. br.set_handle_robots(False)
  5. br.addheaders = [('User-agent', 'Mozilla/5.0')]
  6. br.open('http://www.proxy-listen.de/Proxy/Proxyliste.html')
  7. br.select_form(nr=0)
  8. br.find_control("filter_response_time_http").items[3].selected=True
  9. br.submit()
  10. br.response
  11. print(br.get_data())
  12.  
  13. print("finish")



File "C:/Users/Admin/PycharmProjects/MoneyMaker/Proxy_choose.py", line 11, in <module>
print(br.get_data())
File "C:\Python27\lib\site-packages\mechanize\_mechanize.py", line 628, in __getattr__
".select_form()?)" % (self.__class__, name))
AttributeError: mechanize._mechanize.Browser instance has no attribute get_data (perhaps you forgot to .select_form()?)
Zuletzt geändert von Anonymous am Montag 26. Juni 2017, 22:03, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

Re: Mechanize Checkboxen

Beitragvon BlackJack » Montag 26. Juni 2017, 22:00

@phoenixx592: `br` hat natürlich auch keine `get_data()`-Methode. Wie kommst Du auf diese Ideen? Die `response()`-Methode musst Du *aufrufen* und die gibt ein `Response()`-Objekt als *Rückgabewert*. Wobei man das auch von der `submit()`-Methode auch schon bekommt.
Benutzeravatar
__deets__
User
Beiträge: 2165
Registriert: Mittwoch 14. Oktober 2015, 14:29

Re: Mechanize Checkboxen

Beitragvon __deets__ » Montag 26. Juni 2017, 22:00

Du musst response schon aufrufen - das machen die () dahinter.... - und den Rueckgabewert auch benutzen, um darauf get_data() aufzurufen.
phoenixx592
User
Beiträge: 46
Registriert: Sonntag 25. Juni 2017, 16:41

Re: Mechanize Checkboxen

Beitragvon phoenixx592 » Montag 26. Juni 2017, 22:19

Okay bin ich auch drauf gekommen :lol:

funktioniert jetzt alles soweit, bis auf das er mir die seite http://www.proxy-liste.de auswertet anstatt die http://www.proxy-listen.de/Proxy/Proxyliste.html

  1. import mechanize
  2.  
  3. br = mechanize.Browser()
  4. br.set_handle_robots(False)
  5. br.addheaders = [('User-agent', 'Mozilla/5.0')]
  6. br.open("http://www.proxy-listen.de/Proxy/Proxyliste.html")
  7. br.select_form(nr=0)
  8. br.form['filter_response_time_http'] = ["3"]
  9. br.form['filter_timeouts1'] = ["0"]
  10. br.submit()
  11. html = br.response().readlines()
  12. print(html)
  13.  
  14. print("finish")
Zuletzt geändert von Anonymous am Montag 26. Juni 2017, 23:48, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
phoenixx592
User
Beiträge: 46
Registriert: Sonntag 25. Juni 2017, 16:41

Re: Mechanize Checkboxen

Beitragvon phoenixx592 » Montag 26. Juni 2017, 22:22

ich denke mal ich hab da was mit dem submit falsch beschieben gibt es denn keine option wo man auf eine id clicken kann?

funktion br.click() vll?
phoenixx592
User
Beiträge: 46
Registriert: Sonntag 25. Juni 2017, 16:41

Re: Mechanize Checkboxen

Beitragvon phoenixx592 » Montag 26. Juni 2017, 23:13

Okay also,
kurze Zusammenfassung 8)

  1. import mechanize
  2.  
  3. br = mechanize.Browser()
  4. br.set_handle_robots(False)
  5. br.addheaders = [('User-agent', 'Mozilla/5.0')]
  6. br.open("http://www.proxy-listen.de/Proxy/Proxyliste.html")
  7. br.select_form(nr=0)
  8. br.form['filter_response_time_http'] = ["3"]
  9. br.form['filter_timeouts1'] = ["0"]
  10. br.form.find_control("liststyle").get("leech").selected = True      # Checkbox auf True setzen
  11. br.submit(name="submit", nr=0, id="submit")
  12. html = br.response().readlines()
  13. print(html)
  14.  
  15. print("finish")


Traceback (most recent call last):
File "C:/Users/Admin/PycharmProjects/Maker/Proxy_choose.py", line 10, in <module>
br.form.find_control("liststyle").get("leech").selected = True
File "C:\Python27\lib\site-packages\mechanize\_form.py", line 3101, in find_control
return self._find_control(name, type, kind, id, label, predicate, nr)
File "C:\Python27\lib\site-packages\mechanize\_form.py", line 3185, in _find_control
raise ControlNotFoundError("no control matching "+description)
mechanize._form.ControlNotFoundError: no control matching name 'liststyle'

Die Checkbox mit dem Namen Liststyle gibt es wieso sagt er das er sie nicht controlieren kann?
Zuletzt geändert von Anonymous am Montag 26. Juni 2017, 23:51, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

Re: Mechanize Checkboxen

Beitragvon BlackJack » Montag 26. Juni 2017, 23:56

@phoenixx592: Bei mir funktioniert der Code. :K
Benutzeravatar
snafu
User
Beiträge: 5389
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Re: Mechanize Checkboxen

Beitragvon snafu » Dienstag 27. Juni 2017, 00:12

Bei mir funktioniert der Code auch. Sollte zwar eigentlich nicht sein, aber möglicherweise hilft ein Upgrade auf eine aktuelle mechanize Version? Das geht so:
  1. pip install -U mechanize
shcol (Repo | Doc | PyPi)
phoenixx592
User
Beiträge: 46
Registriert: Sonntag 25. Juni 2017, 16:41

Re: Mechanize Checkboxen

Beitragvon phoenixx592 » Dienstag 27. Juni 2017, 14:12

snafu wie lautet der Befehl unter windows ? Denke pip ist Linux shell bezogen oder ?

Bei mir funktioniert der code.


Nein er wird euch den html code von der Startseite ausgeben und nicht von der seite http://www.proxy-listen.de/Proxy/Proxyliste.html oder sind bei euch ip adressen angegeben im code ? Hab auch schon an Java skript gedacht aber es ist kein Java skript aktiv auf der Seite... :evil: :evil: :evil: :evil: :evil: :evil: :evil:
phoenixx592
User
Beiträge: 46
Registriert: Sonntag 25. Juni 2017, 16:41

Re: Mechanize Checkboxen

Beitragvon phoenixx592 » Dienstag 27. Juni 2017, 14:40

Ich habe mich über die funtkion pip informiert und möchte das mal kurz erklären.

pip ist ein weiteres Python Modul man kann es unter https://pip.pypa.io/en/stable/installin ... nstall-pip nachlesen wie man es installiert bzw. benutzt :D
phoenixx592
User
Beiträge: 46
Registriert: Sonntag 25. Juni 2017, 16:41

Re: Mechanize Checkboxen

Beitragvon phoenixx592 » Dienstag 27. Juni 2017, 14:43

so mein mechanize ist auf den neusten stand nur bekomme ich immernoch die Indexseite von proxylisten.de ausgegeben :oops:

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder