Sida 1 av 1
python urllib "Visa mer"
Postat: 9 maj 2023, 23:53:23
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()
...
Re: python urllib "Visa mer"
Postat: 10 maj 2023, 06:07:11
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.
Re: python urllib "Visa mer"
Postat: 10 maj 2023, 10:06:08
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>
Re: python urllib "Visa mer"
Postat: 10 maj 2023, 11:27:29
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"...
Re: python urllib "Visa mer"
Postat: 10 maj 2023, 12:14:30
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.
Re: python urllib "Visa mer"
Postat: 10 maj 2023, 12:17:29
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']
...
Re: python urllib "Visa mer"
Postat: 10 maj 2023, 12:54:57
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