Potrzebuję wypełnić wartości formularza na stronie docelowej, a następnie kliknąć przycisk w Pythonie. Spojrzałem na Selenium i Wiatrak, ale to są ramy testowe - nie testuję. Próbuję zalogować się na stronę innej firmy programowo, a następnie pobrać i przeanalizować plik, który musimy wstawić do naszej bazy danych. Problem ze strukturami testowymi polega na tym, że uruchamiają one instancje przeglądarek; Chcę tylko skrypt, który mogę zaplanować codziennie, aby pobrać żądaną stronę. Jakikolwiek sposób to zrobić?Wypełnianie wartości formularza na stronie internetowej za pomocą skryptu w języku Python (nie testowanie)
21
A
Odpowiedz
21
Szukasz Mechanize
formularza składającego próbki:
import re
from mechanize import Browser
br = Browser()
br.open("http://www.example.com/")
br.select_form(name="order")
# Browser passes through unknown attributes (including methods)
# to the selected HTMLForm (from ClientForm).
br["cheeses"] = ["mozzarella", "caerphilly"] # (the method here is __setitem__)
response = br.submit() # submit current form
3
Można użyć standardowego urllib
biblioteki to zrobić tak:
import urllib
urllib.urlretrieve("http://www.google.com/", "somefile.html", lambda x,y,z:0, urllib.urlencode({"username": "xxx", "password": "pass"}))
1
Ten przykład Mechanize jak sugeruje wydaje pracować. W polach wejściowych, gdzie trzeba wprowadzić tekst, użyć czegoś takiego:
br["kw"] = "rowling" # (the method here is __setitem__)
Jeśli niektóre treści są generowane po wysłaniu formularza, jak w wyszukiwarce, można dostać go za pośrednictwem:
print response.read()
12
Have spojrzenie na tym przykładzie, które wykorzystują Mechanize: to daje podstawową ideę:
#!/usr/bin/python
import re
from mechanize import Browser
br = Browser()
# Ignore robots.txt
br.set_handle_robots(False)
# Google demands a user-agent that isn't a robot
br.addheaders = [('User-agent', 'Firefox')]
# Retrieve the Google home page, saving the response
br.open("http://google.com")
# Select the search box and search for 'foo'
br.select_form('f')
br.form[ 'q' ] = 'foo'
# Get the search results
br.submit()
# Find the link to foofighters.com; why did we run a search?
resp = None
for link in br.links():
siteMatch = re.compile('www.foofighters.com').search(link.url)
if siteMatch:
resp = br.follow_link(link)
break
# Print the site
content = resp.get_data()
print content
Powiązane problemy
- 1. Dynamiczne wypełnianie wartości formularza za pomocą jQuery
- 2. jsdom nie przetwarza skryptu na stronie internetowej
- 3. Wypełnianie formularza za pomocą PyQt i QWebview
- 4. publikuje na stronie internetowej za pomocą msbuild
- 5. Wypełnianie formularzy tekstowych na innej stronie internetowej w iframe
- 6. Nagrywanie wideo za pomocą kamery internetowej na stronie internetowej
- 7. powiększ na stronie internetowej
- 8. Uruchomienie skryptu w języku Python z Internetu
- 9. HTMLUNIT getformbyname bez nazwy formularza podanej na stronie internetowej
- 10. Wypełnianie stylów za pomocą pojedynczego wykresu w języku Mathematica
- 11. Testowanie listy w języku Boolean w języku Python
- 12. Widżet wyskakujący za pomocą skryptu
- 13. Uruchom plik klasy Java ze skryptu PHP na stronie internetowej
- 14. Wyślij wiadomość do skryptu w języku Python
- 15. Wstępne wypełnianie pliku formularza HTML
- 16. Python nie może odzyskać formularza za pomocą urllib lub zmechanizować
- 17. Wywołanie skryptu w języku Python ze skryptu Applescript
- 18. Nie można ustawić wartości za pomocą skryptu tkinter/python podczas korzystania z cxfreeze
- 19. Wypełnianie kolekcji za pomocą tablic
- 20. Wtyczka formularzy grawitacyjnych - dynamiczne wypełnianie pól formularza nie działa
- 21. Wywoływanie sconów ze skryptu w języku Python
- 22. Angular2 Component: Testowanie zmiany wartości wejściowej formularza
- 23. Obrazy nie ładują się na stronie internetowej
- 24. Testowanie jednostek Funkcje lokalne skryptu Vima za pomocą programu Vimrunner
- 25. Wyodrębnij tekst na stronie za pomocą Python pdfMiner?
- 26. Zmierz czas wczytywania witryny za pomocą zapytań w języku Python
- 27. Wypełnianie tabeli z JSON za pomocą jQuery
- 28. Zmiana katalogu na katalog skryptu w języku Python
- 29. Jak symulować składanie formularza za pomocą jQuery?
- 30. Testowanie za pomocą HTF
utknąłem przy użyciu Python 2.6 jednak tak smutno Mechanize nie jest opcja albo. (Wygląda na GopherError w wersji 2.6). – Habaabiai
Mechanize doc jest zwykle trochę zwięzły, ale działa naprawdę świetnie! –
Myślę, że powinieneś nalegać, spróbuj debugować problem z gopher. W pythonie 2.6 obsługa gopher została usunięta z IIRC, więc naprawienie problemu polega prawdopodobnie na komentowaniu niektórych importów gopherlib i kilku miejscach, w których faktycznie używa się gopher. –