python urllib "Visa mer"

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
Oltronix
Inlägg: 408
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

python urllib "Visa mer"

Inlägg av Oltronix »

Jag läser en websida med urllib, python bibliotek.
https://www.avanza.se/aktier/lista.html
Det går delvis bra men bara delar av sidan kommer tydligen med. Längst ner på sidan finns knappen, "+ Visa fler"
Hur skall jag i pythonkoden aktivera "+Visa mer" eller läsa hela sidan på en gång?

Kod: Markera allt

import urllib.request
...
req = urllib.request.Request(url)
resp = urllib.request.urlopen(req)
respData = resp.read()
...
agehall
Inlägg: 425
Blev medlem: 12 augusti 2020, 19:27:54

Re: python urllib "Visa mer"

Inlägg av agehall »

Nu har jag inte kollat i detalj, men en kvalificerad gissning är att sidan laddas om i JS och att urllib inte hanterar JS-kod som ska köras.
Användarvisningsbild
Oltronix
Inlägg: 408
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

Re: python urllib "Visa mer"

Inlägg av Oltronix »

jo visst har "+Visa fler" knappen ett javascript eller snarare flera javascript.

Kod: Markera allt

<button data-ng-hide="vm.totalNumberOfHits <= 100 || vm.totalNumberOfHits <= vm.service.resultLimit" data-ng-click="vm.fetchMoreResults(\'\')" class="button invertedFocusBtn extraLargeBtn fetchMoreButton">\n\t\t\t+ Visa fler\n\t\t</button>
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43178
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: python urllib "Visa mer"

Inlägg av sodjan »

Det här är ett generellt problem med "screen-scrapers" som inte kan hantera
"dynamiska" sidor där det behövs köras JS kod för att (t.ex.) "visa mer".
Min spontan reaktion är nog bara "glöm det"...
agehall
Inlägg: 425
Blev medlem: 12 augusti 2020, 19:27:54

Re: python urllib "Visa mer"

Inlägg av agehall »

Då är nog ditt alternativ att titta på något mer avancerat, såsom Selenium, men då pratar vi betydligt mer komplicerade lösningar.
Användarvisningsbild
Oltronix
Inlägg: 408
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

Re: python urllib "Visa mer"

Inlägg av Oltronix »

[sodjan:] Det var lite trist att höra detta. Men men jag får hitta en annan väg.

https://www.avanza.se/_api/market-guide/stock/5564
Det enda jag är intressed att få fram är "orderbookId:" för att göra ett annat anrop, för att få fram "quote:"
"isin:" har jag värdet av från annat håll. Men det har jag inte hittat något anrop/länk där jag kan använda "isin:".

För att få ut värdet av "qoute:" när jag har "orderbookId:" använder jag:
https://github.com/Qluxzz/avanza

Kod: Markera allt

from avanza import Avanza
avanza = Avanza({
    'username': 'XXXX',
    'password': 'YYYY',
    'totpSecret': 'ZZZZ'
avanza.get_stock_info(orderbookId)
...
current_stock=data['quote']['last']
...
Användarvisningsbild
Oltronix
Inlägg: 408
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

Re: python urllib "Visa mer"

Inlägg av Oltronix »

Jag hittade:
avanza. search_for_stock("XYZ", 10)
i
https://github.com/Qluxzz/avanza
Som leverar bla "orderbookId:"
Det löser mitt problem för stunden.

[agehall:] Selenium får jag titta på senare för att förstå vad ddet erbjuder
Skriv svar