Vinnaren i pepparkakshustävlingen!
2018-08-07, 22:44
  #1
Medlem
För någon månad sen tänkte jag att jag skulle lära mig python. Har gjort övningarna på practicepython.org och tänkte nu testa att scrape:a alla odds från ex. de närmaste tennis matcherna för att sedan kunna jämföra med andra sidor etc.

Min kod ser ut såhär:
Kod:
import requests
from bs4 import BeautifulSoup

url = 'https://mobile.bet365.com/#type=Coupon;key=13-1-50-2-163-0-0-0-1-0-0-4505-0-0-1-0-0-0-0-0-83-0-0;ip=0;lng=8;anim=1'
r = requests.get(url)
soup = BeautifulSoup(r.text, 'html.parser')

for odds in soup.find_all('span', class_="ippg-Market_Odds"):
    print(odds.text)

Men av någon anledning printas det inte utan några odds alls. Fattar fan ingenting för oddsen ligger i de tagsen som jag har specifierat.

Läste att man kune använda selenium för det kanske är typ skrivet i Java och inte går att nå med requests eller nåt. Har lyckats installera det och så, men får samma resultat där. Det är som att python inte hittar oddsen. Om jag tar bort class_="ippg-Market_Odds", borde ju oddsen komma, plus massa annan text men det finns liksom inga odds alls i variabeln.

Vad gör jag för fel?
Citera
2018-08-07, 22:49
  #2
Medlem
Jag har försökt använda beautifulsoup förut men inte riktigt lyckats installera det ordentligt, då körde jag linux. Så jag sket i att försöka. Men tror jag läste någonstans att bs kan vara utdaterad (om inte minnet missminner mig), finns det inte någon ny version/ny kod att ladda ner o importera för att lösa just ditt problem? har du testat googla lite på fetch specific data from websites with python eller något liknande, känns som att det definitivt borde finnas skräddarsydda lösningar för liknande som du är ute efter.
Citera
2018-08-07, 23:13
  #3
Medlem
Anledningen varför Python inte hittar är för att klassen ligger i en javascript-fil som laddas efter sidan har lästs in utav Python, python får helt enkelt bara "templaten" (högerklicka på sidan och klicka på "View Source" så ser du vad Python får) . Jag rekommenderar att du använder Bet365s API istället för att skrapa hemsidan.

https://betsapi.com/api-doc/index.html
Citera
2018-08-08, 08:40
  #4
Medlem
hm-skulle det funka bättre med t ex PhantomJs/slimerjs som är javascriptbaserade?
Citera
2018-08-08, 23:07
  #5
Medlem
BlaBlaBrahs avatar
Du kan köra selenium genom python om du vill. Det är sjukt smidigt numera och API:n är väldigt lik requests/beautifulsoup och mechanicalsoup, men du scriptar en faktisk browser, så allt den kan göra kan du göra, inklusive köra javascript.
Citera
2018-08-09, 08:11
  #6
Moderator
vhes avatar
Citat:
Ursprungligen postat av sparvodling48
hm-skulle det funka bättre med t ex PhantomJs/slimerjs som är javascriptbaserade?

PhantomJS är nedlagt, och såvitt jag förstått så är en av anledningarna att "riktiga" browsers nuförtiden börjar få användbara headless-lägen, så man kan använda dem direkt. Det finns ingen anledning att inte köra på Selenium eller liknande teknologi.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback