Forum
>>
Principianti
>>
Requests.post continua a darmi come response 405 (Method not allowed)
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da biagiodistefano |
2016-07-31 16:17:48 - Requests.post continua a darmi come response 405 (Method not allowed)
|
Ciao a tutti,
premetto che non sono un programmatore ma un giurista con un hobby alternativo (almeno per la categoria). Ciò detto, mi trovo davanti al seguente problema. Vorrei automatizzare la ricerca delle sentenze della cassazione che ora sono disponibili gratuitamente online. Il sito è quello riportato nel codice. import requests url = "http://www.italgiure.giustizia.it/sncass/" test_query = "1235/2012" payload = {"searchterm": test_query, "estremi": ""} resp = requests.post(url, payload) print(resp) Continuo, come da titolo, a ricevere errore 405. Non capisco dove sia l'errore nel codice. Una volta risolto ciò, avrò un altro problema: i risultati compariranno sotto la ricerca, senza caricare una nuova pagina. A quel punto come fare per fare scraping? Devo usare Session()? Grazie in anticipo e perdonate l'ignoranza! |
|
Scritto da Daniele aka Palmux |
2016-08-01 19:44:24 - Re: Requests.post continua a darmi come response 405 (Method not allowed)
|
Ciao caro, il 405 ti sta dicendo che stai usando la risorsa in maniera inappropriata. Probabilmente stai usando un metodo non permesso, ad
esempio questo accade quando si usa il metodo GET per inviare dati da presentare con un metodo POST o viceversa. Da quanto capisco stai cercando di interagire con quel form che indichi nel link, ed allora potresti usare Mechanize o similari, più adatti allo scopo specifico. Cya |
|
Scritto da biagiodistefano |
2016-08-01 20:09:07 - Re: Requests.post continua a darmi come response 405 (Method not allowed)
|
Ciao, grazie per la risposta.
Volevo infatti provare con mechanize, non foss'altro che a quanto vedo non è supportato per python3 (dopo l'import dà errore: ImportError: No module named '_version') Ho appena visto che però Mechanize è stato "unito" con BeautifoulSoup per dar vita a "MechanicalSoup". Ora provo a studiarmelo e vedere che ne cavo. Posterò il risultato (oppure un'altra richiesta di aiuto :dont-know |
|
Scritto da Daniele aka Palmux |
2016-08-01 20:11:17 - Re: Requests.post continua a darmi come response 405 (Method not allowed)
|
Certo, intanto buono studio.
Cya |
|
Scritto da biagiodistefano |
2016-08-01 22:42:55 - Re: Requests.post continua a darmi come response 405 (Method not allowed)
|
Dunque, piccoli progressi. Ma credo mi sfugga qualcosa.
Sto usando il modulo mechanicalsoup. Questo è il codice: import mechanicalsoup, re def fetchfile(query): url = "http://www.italgiure.giustizia.it/sncass/" browser = mechanicalsoup.Browser() page = browser.get(url) search_form = page.soup.find("form", {"id": "z-form"}) search_form.find("input", {"id":"searchterm"})["value"] = query response = browser.submit(search_form, url) print(response) print("1235" in response.text) fetchfile("1235/2012") Il passo avanti è che response è un bellissimo 200, ma purtroppo al rapido controllo "1235" in response.text ottengo False. Che l'input form sia quello giusto; sono sicuro al 99%: <input accesskey="p" autocomplete="off" class="keylist" data-arg="text" data-placeholder=" Parole o Numero/Anno sentenza" data-role="query" id="searchterm" style="width:16em; border:solid 1px #a9a9a9; border-radius:4px; vertical-align:bottom; /*font-size:.9em*/" tabindex="0" title="ricerca per parole o estremi"/>Infatti, guardando il sorgente pagina dal browser viene graficamente evidenziato proprio quell'elemento. Ho le seguenti perplessità: - può essere che non funziona perché l'input form non ha come attributo nativo "value"? ho visto che in altri input form c'è, ma dovrebbe essere un argomento passato di default col submit, o sbaglio? - ipotizzando per assurdo che il submit vada a buon fine, sarà mica che il mio insuccesso con questo metodo è collegato al fatto che non viene generata una nuova pagina (il link rimane invariato ma gli elementi compaiono sotto), e quindi il risultato c'è ma non lo vedo? Mi sembra strano, perché quando eseguo l'operazione manualmente, nel sorgente della pagina successivo alla ricerca, compaiono gli elementi html dei risultati. Che mi sto perdendo? --- Ultima modifica di biagiodistefano in data 2016-08-01 22:47:28 --- --- Ultima modifica di biagiodistefano in data 2016-08-02 02:09:44 --- |
|
Scritto da biagiodistefano |
2016-08-01 22:48:09 - Re: Requests.post continua a darmi come response 405 (Method not allowed)
|
(scusatemi ma sto avendo problemi con la formattazione del post e non riesco ad aggiustarlo, mi si scombina sempre!)
|
|
Scritto da Daniele aka Palmux |
2016-08-03 16:56:07 - Re: Requests.post continua a darmi come response 405 (Method not allowed)
|
Ciao caro, dovresti usare il pulsante su tutto il codice e risolvi/riduci i problemi di formattazione.
Premesso che non posso provare il tuo codice perché non ho un computer degno di questo nome davanti a me in questo momento (in tutti i casi avrei avuto una versione per 2.7), controlla che tipo di interazione hai col form, cioè se ottieni un vero e proprio invio del tuo form in HTML, a quel punto non ci sono problemi e puoi continuare con i tuoi tentativi. Però se siamo difronte ad un form che scatena un evento in Javascript, la documentazione ci dice che: Mechanize doesn't evaluate javascript. In questo caso devi valutare delle alternative come Selenium, che però non ho mai usato e non posso esserti d'aiuto. Ciao. Daniele |
Pagina: 1
Esegui il login per scrivere una risposta.