Очистить веб-форму ASPX с помощью wget?

Для проекта сбора/анализа данных я пытаюсь загрузить записи в веб-форме aspx по адресу http://www.lasuperiorcourt.org/civilcasesummarynet/ui/?CT=AP&casetype=appellate, но пока у меня мало успехов.

Идея состоит в том, чтобы загрузить соответствующую информацию с веб-страницы через wget и вывести результаты в один html-файл. Затем из полученных результатов я собирал статистику по извлеченным данным по соответствующим случаям (например, от номеров дел BV024000 до BV028933).

Однако у меня возникли проблемы с получением данных из формы с помощью wget. Я использовал:

wget --post-data "frmsearch=BV024000" http://www.lasuperiorcourt.org/civilcasesummarynet/ui/?CT=AP^&casetype=appellate -O output.html

Но я просто возвращаю исходную страницу, а не вывод формы. Что я делаю неправильно?


person user1593757    schedule 12.08.2012    source источник


Ответы (2)


Есть две проблемы

  1. У вас есть опечатки в вашей команде - вы должны заключить http-адрес в кавычки и ui/index.aspx?CT=AP. без ^
  2. Когда вы публикуете форму, вы должны опубликовать все поля ввода формы, иначе ваш почтовый запрос не будет подтвержден.

Здесь я сделал запрос следующим образом

    wget --post-data "__VIEWSTATE=%2FwEPDwUJMzM0NzAxOTczD2QWBgIBD2QWCmYPDxYCHgdWaXNpYmxlZ2RkAgIPDxYCHwBoZGQCBA8PFgIfAGhkZAIGDw8WAh8AaGRkAggPDxYCHwBoZGQCAw9kFgpmDw8WAh8AZ2RkAgIPDxYCHwBoZGQCBA8PFgIfAGhkZAIGDw8WAh8AaGRkAggPDxYCHwBoZGQCCQ9kFgICAw8PFgIfAGhkFgICAQ8QZA8WIGYCAQICAgMCBAIFAgYCBwIIAgkCCgILAgwCDQIOAg8CEAIRAhICEwIUAhUCFgIXAhgCGQIaAhsCHAIdAh4CHxYgEAUGU2VsZWN0BQZTZWxlY3RnEAUTQWxoYW1icmEgQ291cnRob3VzZQUDQUxIZxAFFUJlbGxmbG93ZXIgQ291cnRob3VzZQUDTEMgZxAFGEJldmVybHkgSGlsbHMgQ291cnRob3VzZQUDQkggZxAFEkJ1cmJhbmsgQ291cnRob3VzZQUDQlVSZxAFFUNoYXRzd29ydGggQ291cnRob3VzZQUDQ0hBZxAFEkNvbXB0b24gQ291cnRob3VzZQUDQ09NZxAFFkN1bHZlciBDaXR5IENvdXJ0aG91c2UFA0NDIGcQBRFEb3duZXkgQ291cnRob3VzZQUDRE9XZxAFG0Vhc3QgTG9zIEFuZ2VsZXMgQ291cnRob3VzZQUDRUxBZxAFE0VsIE1vbnRlIENvdXJ0aG91c2UFA0VMTWcQBRNHbGVuZGFsZSBDb3VydGhvdXNlBQNHTE5nEAUaSHVudGluZ3RvbiBQYXJrIENvdXJ0aG91c2UFA0hQIGcQBRRJbmdsZXdvb2QgQ291cnRob3VzZQUDSU5HZxAFFUxvbmcgQmVhY2ggQ291cnRob3VzZQUDTEIgZxAFEU1hbGlidSBDb3VydGhvdXNlBQNNQUxnEAUtTWljaGFlbCBBbnRvbm92aWNoIEFudGVsb3BlIFZhbGxleSBDb3VydGhvdXNlBQNBVFBnEAUTTW9ucm92aWEgQ291cnRob3VzZQUDU05JZxAFE1Bhc2FkZW5hIENvdXJ0aG91c2UFA1BBU2cQBRdQb21vbmEgQ291cnRob3VzZSBOb3J0aAUDUE9NZxAFGFJlZG9uZG8gQmVhY2ggQ291cnRob3VzZQUDU0JCZxAFF1NhbiBGZXJuYW5kbyBDb3VydGhvdXNlBQNMQVNnEAUUU2FuIFBlZHJvIENvdXJ0aG91c2UFA0xBUGcQBRhTYW50YSBDbGFyaXRhIENvdXJ0aG91c2UFA05FV2cQBRdTYW50YSBNb25pY2EgQ291cnRob3VzZQUDU00gZxAFFVNvdXRoIEdhdGUgQ291cnRob3VzZQUDU0cgZxAFF1N0YW5sZXkgTW9zayBDb3VydGhvdXNlBQNMQU1nEAUTVG9ycmFuY2UgQ291cnRob3VzZQUDU0JBZxAFGFZhbiBOdXlzIENvdXJ0aG91c2UgV2VzdAUDTEFWZxAFFldlc3QgQ292aW5hIENvdXJ0aG91c2UFA0NJVGcQBRtXZXN0IExvcyBBbmdlbGVzIENvdXJ0aG91c2UFA0xBV2cQBRNXaGl0dGllciBDb3VydGhvdXNlBQNXSCBnFgFmZGQk7ioHoNWuWLyRkeV2Jf7vbNorIw%3D%3D&CaseNumber=BV024000&submit1=Search&casetype=appellate" "http://www.lasuperiorcourt.org/civilcasesummarynet/ui/index.aspx?CT=AP&casetype=appellate" -O output.html
--2012-08-12 19:25:32--  http://www.lasuperiorcourt.org/civilcasesummarynet/ui/index.aspx?CT=AP&casetype=appellate
Resolving www.lasuperiorcourt.org... 153.43.255.56
Connecting to www.lasuperiorcourt.org|153.43.255.56|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: /civilcasesummarynet/ui/casesummary.aspx?CT=AP&casetype=appellate [following]
--2012-08-12 19:25:33--  http://www.lasuperiorcourt.org/civilcasesummarynet/ui/casesummary.aspx?CT=AP&casetype=appellate

и это сработало, см. рисунок http://i47.tinypic.com/35db8k3.png

Вероятно, вам потребуется установить новое значение __VIEWSTATE для каждого запроса.

person oscar.getstring    schedule 12.08.2012
comment
Есть идеи, как выполнить пакетную обработку ввода, т.е. пакетную публикацию каждого числа от BV024000 до BV028000 и сохранение всего вывода в один файл? - person user1593757; 12.08.2012
comment
Ну, вы можете получить начальное значение для __VIEWSTATE в своем браузере. Затем у вас может быть цикл для вызова wget и увеличения значения CaseNumber в вы можете сделать это непосредственно в bash for ((i=24000; i<=28000; i+=1000)) ; do wget --post-data "__VIEWSTATE=[YOUR VALUE]&CaseNumber=BV0${i}&submit1=Search" [OTHER OPTION AS BEFORE] ; done - person oscar.getstring; 12.08.2012
comment
У меня возникли проблемы с вводом правильного значения __VIEWSTATE. Я получаю значение __VIEWSTATE из своего браузера, но похоже, что это значение не работает с wget. Есть ли какие-то специальные правила кодирования URL, которые я забыл? Есть ли что-то еще, что мне не хватает? - person user1593757; 13.08.2012
comment
возможно, нужно экранировать различные «%», если вы используете окна, но я мало что знаю об этом. - person oscar.getstring; 14.08.2012
comment
Наконец-то я понял это и получил правильное значение с помощью надстройки живых http-заголовков из Firefox. Спасибо за твою помощь! - person user1593757; 16.08.2012

В какой среде вы выполняете эту команду? В большинстве оболочек Unix «&» — это специальный символ, который завершает командную строку и отправляет команду при выполнении в фоновый режим. , но вы никоим образом не цитируете этот URL-адрес.

Редактировать: хорошо, неважно ... мой ответ не был таким уж полезным, за исключением того, что я не знал, что «^» был символом кавычки, и теперь я знаю. http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/ntcmds_shelloverview.mspx?mfr=true

person JayC    schedule 12.08.2012
comment
Если с этим ответом что-то не так, пожалуйста, дайте мне знать. AFAIK, то, что я предоставил, актуально. - person JayC; 12.08.2012
comment
Я использовал оболочку Win32, поэтому использовал escape-символ ^. Не несет ответственности за -1. - person user1593757; 12.08.2012