제출 버튼이 1 개 이상인 양식을 제출하는 방법. 웹 사이트로 게시물을 보냅니다. (파이썬)
문제
사용하는 스크립트를 만들고 있습니다 파이썬 기계화 웹 사이트에 로그인하여 양식을 제출할 수 있습니다. 그러나이 양식에는 3 개의 제출 버튼 (미리보기, 게시 및 취소)이 있습니다. 나는 단 하나의 버튼 만 사용하는 데 익숙하다 ...
이것은 형식입니다.
<TextControl(subject=Is this good for the holidays? Anyone know about the new tech?)>
<IgnoreControl(threads=<None>)>
<TextareaControl(message=Im new to technology stocks.)>
<SelectControl(identity=[*annamae41g])>
<RadioControl(E=[5, 4, *3, 2, 1, 0])>
<SubmitControl(SubmitPreview=Preview Message) (readonly)>
<SubmitControl(SubmitPost=Post Message) (readonly)>
<SubmitControl(SubmitCancel=Cancel) (readonly)>
<HiddenControl(action_btn=) (readonly)>
<HiddenControl(_charset_=) (readonly)>
<HiddenControl(.crumb=4DxnFEwMIGG) (readonly)>
<HiddenControl(r=/Stocks_(A_to_Z)/Stocks_G) (readonly)>
<HiddenControl(bn=25263) (readonly)>
<HiddenControl(<None>=annamae41g) (readonly)>>
그리고 이것은 내 코드입니다.
br.open(newtopic_url)
br.select_form(name="postmsg")
br.form['subject'] = "Is this good for the holidays? Anyone know about the new tech?"
br.form['message'] = "Im new to technology stocks."
br.form['E'] = ['3']
br.form['identity'] = ['annamae41g']
print br.form
br.submit()
이 스크립트를 실행하면 작동하지 않습니다. 아무 반응이 없습니다. 양식에 3 개의 제출 버튼이 있기 때문에 가정합니다. 아니면 또 다른 문제입니까?
해결책 2
문제 해결됨.
파이썬 기계화를 사용하지 마십시오. 다른 게시물 데이터를 보낼 수는 없습니다.
어떤 이유로, 현재 문제에있는 게시물 데이터만으로는 충분하지 않습니다. 서버로 전송 해야하는 다른 것들이 있습니다.
따라서 모든 데이터를 통해 일반 오프너/쿠키 자르 메소드를 사용해야합니다. FireBug (인터넷을보고)에서 추가 데이터 (주제, 메시지, E, ID)를 얻었습니다.
다른 팁
나는 당신과 같은 문제가있었습니다.
두 개의 제출 버튼이있는 양식은 먼저 미리보기, 두 번째는 제출되었습니다.
처음에는 Mechanize가 첫 번째 버튼 만 사용했으며 사용하는 서버 답변을 볼 수있었습니다.
response = browser.submit()
print response.read()
제출 버튼 이름을 Mechanize 제출 기능에 매개 변수로 넣었습니다.
response = browser.submit("submit")
테스트하십시오. 그것은 당신에게도 효과가 있어야합니다!
제휴하지 않습니다 StackOverflow