Ich untersuche Subj, da es eine Website gibt, auf die ein Teil der Daten zugegriffen werden kann, nachdem Sie auf einen solchen Link geklickt haben.Klicken Sie auf JS-Link mit Splash
Ich habe ein Skript wie folgt:
#!/usr/bin/env python
script="""
splash:go(splash.args.url)
splash:wait(10)
splash:runjs("$('a[data-bet-type=FixedPlace]')[0].click()")
splash:wait(10)
return {
-- html = splash:html(),
png = splash:png(),
-- har = splash:har(),
}
"""
from requests import post
from json import dumps, dump
from base64 import b64decode
from contextlib import suppress
if 1:
endpoint='http://localhost:8050/run'
j={
'lua_source': script,
'url': 'https://www.odds.com.au/horse-racing/bunbury/race-1',
'timeout': 90,
'headers': {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:56.0) Gecko/20100101 Firefox/56.0'
}
}
r=post(endpoint, headers={'Content-Type': 'application/json'}, data=dumps(j))
print(r.status_code)
if r.status_code != 200:
print(r.text)
exit()
j=r.json()
for _ in ('html', 'har'):
with suppress(KeyError), open('1.'+_, 'w') as f: f.write(j[_])
with suppress(KeyError), open('1.png', 'wb') as f: f.write(b64decode(j['png']))
if 'har' in j:
for entry in j['har']['log']['entries']:
url=entry['request']['url']
if url.startswith('https://www.odds.com.au'): print(url)
Aber obwohl es perfekt ist die Seite dargestellt wird, der Klick nicht geschieht. Ich habe mit ya.ru versucht und der gleiche Ansatz funktioniert (aber es war ein Knopf in diesem Fall). Ich habe keine Ideen mehr. Versuchte Einstellung UA, Wiedergabe mit Wartezeiten (es ist nicht schnell, diese Seite), mit js_source, aber kann nicht auf ein Ding klicken, obwohl ich sehe, dass das Element gefunden wird.
Welche Version von Splash verwenden Sie? In Splash 2.1 gibt es 'splash: mouse_click' ([Beispiel] (http://splash.readthedocs.io/en/latest/scripting-ref.html#splash-mouse-click)). Auch lohnenswert zu lesen ([Trigger jquery click] (https://stackoverflow.com/questions/1694595/can-i-call-jquery-click-to-follow-an-a-link-if-i-havent- bound-an-event-hand)) – Adelin
@Adelin Ich habe Splash 3.0 von Master, und mouse_click funktioniert. – Pooh