2014-09-04 2 views
0

Mechanize가 필드를 감지하지 못하기 때문에 양식에 필드를 추가하는 데 어려움을 겪고 있습니다. 3 가지 양식이 있으며 올바른 양식을 선택했습니다. 이 양식에 따라 어떤 필드를 포함하지 않는 것을 form = site.form[2]이름없는 필드를 양식에 추가하십시오. Mechanize Ruby

문제 :

=> [#<Mechanize::Form 
{name "userloginform"} 
{method "POST"} 
{action "/user?destination="} 
{fields 
    [text:0xc01f34 type: text name: name value: ] 
    [field:0xc01cf0 type: password name: pass value: ] 
    [hidden:0xc01ad4 type: hidden name: url value: en/Results+Statistics] 
    [hidden:0xc01930 type: hidden name: form_id value: user_login]} 
{radiobuttons} 
{checkboxes} 
{file_uploads} 
{buttons [submit:0xc017c8 type: submit name: op value: Login]}> 
, #<Mechanize::Form 
{name "searchFromBlock"} 
{method "GET"} 
{action ""} 
{fields 
    [text:0xc04964 type: text name: queryString value: Search] 
    [hidden:0xc044b4 type: hidden name: num value: 10] 
    [hidden:0xc09f68 type: hidden name: pagenum value: 1] 
    [hidden:0xc09ce8 type: hidden name: start value: 1] 
    [hidden:0xc09ae0 type: hidden name: lang value: en] 
    [hidden:0xc097e8 type: hidden name: content value: all]} 
{radiobuttons} 
{checkboxes} 
{file_uploads} 
{buttons [submit:0xc046f8 type: submit name: search value: ]}> 
, #<Mechanize::Form 
{name nil} 
{method "GET"} 
{action ""} 
**{fields}** 
{radiobuttons} 
{checkboxes} 
{file_uploads} 
{buttons}>}> 
    ] 

내가 (내 목표 인) 마지막 양식을 선택하여 : p site.forms를 입력

는 다음을 제공합니다 기계화, 실제로는 다른 3 개의 필드를 포함합니다. 이것들을 조작하고 싶지만, 그렇게하기 전에 폼 객체에 필드를 추가해야합니다.

이러한 필드의 예는 다음과 같습니다

<select id="season" class="w_label_resul fonts12" style="display: none" size="7"> 
<option title="1949" value="1949"> … </option> 
<option title="1950" value="1950"> …</option> 
<option title="1951" value="1951"> … </option> 
<option title="2012" value="2012"> … </option> 
<option title="2013" value="2013"> … </option> 
<option class="selected" selected="" title="2014" value="2014"> … </option> 
</select> 

보시다시피, 그것은 더 '이름'이 없다, 그래서 첫 번째 인수로 필요하기 때문에 나는 Mechanize::form에 대한 을 add_field! 방법을 사용할 수 없습니다 field_name, 존재하지 않습니다. 의미 Nokogiri에 의해 제대로 구문 분석되지 않습니다?

수동으로 필드를 추가하는 다른 방법이 있습니까? 아니면 내가 내려다 볼 수 있습니까?

+0

Apperently 웹 사이트는 자바 스크립트를 사용하여 생성되었습니다. – Basher52

답변

0

나는 웹 페이지가 javascript에 의해 생성된다는 것을 알았습니다. 이것은 아마도 양식이 작동하지 않는 이유 일 것입니다.

자바 코드를 읽으면 내가 선택한 옵션에 따라 웹 링크가 어떻게 구성되는지 알았습니다. Nokogiri를 사용하여 이러한 옵션을 반복하고 링크를 만들고 html 소스 코드를 다운로드하면 원하는 곳으로 이동할 수있었습니다.

+0

혼자서 해결할 수 있었던 것 같습니다. 자신의 대답을 수락하십시오. –

+0

그냥 했어, thx :) – Basher52