Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Python: POST ei onnistu

E1ss [11.02.2019 11:00:20]

#

Yritän saada kaavittua tietoa tältä https://inshorts.com/en/read sivulta pythonin avulla mutta tällä hetkellä joku ongelma jota en ymmärrä. Eli nettisivulla on nappi "load more" joka lataa lisää uutisia. Tarkoituksenani on tehdä sama pyyntö kuin tällä napilla jolloin saisin ennemmän uutisia palautuksena. Javascriptillä tehdessä tämä onnistuu hyvin mutta Pythonilla ei palauta oikeaa juttua. Alla koodit jotka varmaan selventää.

Javascript:

var min_news_id = "4wooehzu-1";
    function loadMoreNews(){
      $("#load-more-btn").hide();
      $("#load-more-gif").show();
      $.post("/en/ajax/more_news",{'category':'','news_offset':min_news_id},function(data){
          data = JSON.parse(data);
          min_news_id = data.min_news_id||min_news_id;
          $(".card-stack").append(data.html);
      })
      .fail(function(){alert("Error : unable to load more news");})
      .always(function(){$("#load-more-btn").show();$("#load-more-gif").hide();});
    }

Python:

request = requests.post("https://www.inshorts.com/en/ajax/more_news", data={'category':'','news_offset' : min_news_id})
print("content:",content.text)

Python printtaa:

content: <!doctype html>
<html lang="utf-8">
<head>
... jne.

Semmoisen huomasin että pythonin printtaus on sama kuin etusivu ja se palautetaan jos tuonne /en/ajax/more_news sivulle yrittää mennä ilman mitään posteja.

Metabolix [11.02.2019 12:57:56]

#

Tee pyyntö oikeaan osoitteeseen eli inshorts.com eikä www.inshorts.com. (Tulosta myös tulos oikeasta muuttujasta eli koodissasi request eikä content.)

import requests
request = requests.post(
	"https://inshorts.com/en/ajax/more_news",
	data = {"category": "", "news_offset": "ljvffe6q-1"}
)
print(request.text)

E1ss [11.02.2019 14:53:45]

#

Kiitos! nyt toimii

E1ss [12.02.2019 20:08:13]

#

Samaan aiheeseen hieman erilainen kysymys.

Yritän tehdä Business Insiderille saman jutun. businessinsider.com

<input type="button" style="text-align: center;" class="btn btn-big btn-attend hide-button-mobile-down" id="load-more" data-page="1" value="Load more">

Tuo on napin koodi mutta en ymmärrä mihin kutsu tehdään. Yritän siis loppujen lopuksi taas saada siten että Pythonilla voisin helposti saada lähdekoodin kaikista uutisista.

document.getElementById("load-more").click();

Tällä koodilla sain JavaScript consolia hyöydyksi käyttäen ladattua lisää uutisia mutta jos ensin lataan kaikki uutiset sivulle ja sitten vasta kopioin lähdekoodin yleensä selain kaatuu kun tesktiä kopioitavaksi on niin paljon.

Metabolix [12.02.2019 20:36:08]

#

Selaimen konsolista voit katsoa Network-välilehdeltä, millainen pyyntö palvelimelle lähtee eli millä niitä uutisia haetaan.

E1ss [12.02.2019 20:58:55]

#

Joo nyt löytyi. Kiitos avusta Metabolix.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta