ja próbując drapać poniższą stronę internetową:PhantomJS pobrać przy użyciu javascript odnośnik
Jeśli kliknij mały przycisk w prawym górnym rogu tabeli zatytułowanej „Eksport danych”, javascript skrypt działa, a moja przeglądarka pobiera plik w postaci .csv. Chciałbym móc napisać skrypt PhantomJS, który może to zrobić automatycznie. Jakieś pomysły?
Powyższy przycisk jest zakodowana w HTML, takich jak:
<a id="LB_cmdCSV" href="javascript:__doPostBack('LB$cmdCSV','')">Export Data</a></div>
Ja również znaleźć tej funkcji w kodzie źródłowym HTML:
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
jestem bardzo nowy PhantomJS/JavaScript i może użyj tutaj niektórych wskaźników. Myślę, że znalazłem wszystkie informacje, których potrzebuję, aby to zrobić automatycznie (popraw mnie, jeśli się mylę), ale nie wiem, od czego zacząć kodowanie. Dzięki za pomoc.
EDIT - To jest to, co mój skrypt wygląda teraz:
var page = new WebPage();
url = 'http://www.fangraphs.com/leaders.aspx?pos=all&stats=bat&lg=all&qual=0&type=8&season=2011&month=0&season1=2011&ind=0&team=0&rost=0& players=0';
page.open(encodeURI(url), function (status){
if (status !== "success") {
console.log("Unable to access website");
} else {
page.evaluate(function() {
__doPostBack('LB$cmdCSV', '');
});
}
phantom.exit(0);
});
dzięki za wskazówki. Rozpocząłem testowanie rzeczy w konsoli programisty Chrome i mam javascript do pracy i pliki do pobrania poprawnie. Jednak przy uruchomieniu tego samego kodu z linii poleceń za pomocą phantomJS nic się nie dzieje. Czy to możliwe, ponieważ muszę określić, gdzie pobrać plik (podczas gdy ustawienia Chrome zawsze umieszczają go w katalogu/home/downloads /)? –
Dodano również mój obecny skrypt do OP –
Ta metoda nie działa dla mnie w casperJS. Chociaż robię to na innej stronie ASPX. – Erik