ich habe zwei Varianten geschrieben. Beide Varianten beziehen die gleiche URL und machen das gleiche. Ich möchte bestimmte Werte aus einem Textbox-Control auslesen. Nun möchte ich euch fragen, wer von beiden mehr Speicher "frisst"? Also zeitlich gesehen tun sich beide nichts. Die mechanize-Variante hat ein paar Millisekunden die Nase vorn. Ich würde eher vermuten, dass die requests-Variante mehr "frisst", da noch eine zusätzliche Bibliothek für die gleiche Aufgabe importiert werden muss. Das sind aber nur haltlose Vermutungen. Ich hätte da gerne eure Erfahrungswerte.
Requests-Variante
Code: Alles auswählen
import requests
from bs4 import BeautifulSoup
from datetime import datetime
URL = "http://demos.click4knowledge.com/PHP-login-script-tutorial/login.php"
print "START"
start_time = datetime.now()
info_dict = {}
with requests.Session() as s:
res = s.get(URL)
soup = BeautifulSoup(res.content)
g_data = soup.find_all("input", {"class": "form-control"})
for item in g_data:
info_dict[item["id"]] = item["value"]
print "username:", info_dict["username"]
print "password:", info_dict["password"]
end_time = datetime.now()
print "END", end_time - start_time
Code: Alles auswählen
import mechanize
from datetime import datetime
URL = "http://demos.click4knowledge.com/PHP-login-script-tutorial/login.php"
print "START"
start_time = datetime.now()
info_dict = {}
br = mechanize.Browser()
br.set_handle_robots(False)
response = br.open(URL)
br.select_form(nr=0)
for control in br.form.controls:
info_dict[control.name] = control.value
response.close()
print "username:", info_dict["username"]
print "password:", info_dict["password"]
end_time = datetime.now()
print "END", end_time - start_time