문제

내가 사용하는 버스 회사는 끔찍한 웹 사이트를 운영합니다.헤브라이 사람,영어) 단순한 "A에서 B Timetable까지 오늘"을 쿼리합니다. 비용이 많이 드는 SMS 쿼리 시스템의 사용을 장려하려고한다고 생각합니다.

가능한 모든 지점에 대한 쿼리를 가능한 모든 지점에 제출하여 사이트에서 전체 시간표를 수확하려고합니다. 쿼리 결과는 팝업 창에 나타납니다. 저는 웹 프로그래밍에 익숙하지만 Python의 기본 측면에 익숙합니다.

  1. 페이지를 구문 분석하고 드롭 다운 메뉴에서 값을 선택하고 스크립트를 사용하여 "제출"을 누르는 가장 우아한 방법은 무엇입니까?
  2. 프로그램에 새로운 팝업의 내용을 입력으로 어떻게 제공합니까?

감사!

도움이 되었습니까?

해결책

능직 웹 브라우징을위한 간단한 스크립팅 언어입니다. 스포츠에 발생합니다 파이썬 API.

Twill은 본질적으로 기계화 패키지 주변의 얇은 껍질입니다. 모든 Twill 명령은 commands.py 파일에 구현되며 pyparsing은 입력을 구문 분석하고 Python 명령으로 변환하는 작업을 수행합니다 (parse.py 참조). 대화식 쉘 작업 및 읽기 라인 지원은 CMD 모듈 (표준 Python 라이브러리)을 통해 구현됩니다.

위의 링크 된 문서에서 "누출"을 제출하는 예 :

from twill.commands import go, showforms, formclear, fv, submit

go('http://issola.caltech.edu/~t/qwsgi/qwsgi-demo.cgi/')
go('./widgets')
showforms()

formclear('1')
fv("1", "name", "test")
fv("1", "password", "testpass")
fv("1", "confirm", "yes")
showforms()

submit('0')

다른 팁

나는 당신이 사용하는 것이 좋습니다 기계화. 다음은 양식을 제출하는 방법을 보여주는 페이지의 코드 스 니펫입니다.


import re
from mechanize import Browser

br = Browser()
br.open("http://www.example.com/")
# follow second link with element text matching regular expression
response1 = br.follow_link(text_regex=r"cheese\s*shop", nr=1)
assert br.viewing_html()
print br.title()
print response1.geturl()
print response1.info()  # headers
print response1.read()  # body
response1.close()  # (shown for clarity; in fact Browser does this for you)

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__)
response2 = br.submit()  # submit current form

# print currently selected form (don't call .submit() on this, use br.submit())
print br.form

핸들러 리소스에 대한 요청을 직접 게시하거나 게시하지 않고 실제로 "제출 버튼을 누르십시오"를 거의 원하지 않습니다. 양식이있는 HTML을보고, URL에 제출 한 매개 변수와 메소드를 얻거나 게시하는지 확인하십시오. 이러한 요청을 urllib (2)로 쉽게 만들 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top