Masalah menemukan elemen berdasarkan kelas dengan sup yang indah

Saya mencoba mendapatkan nama acara di halaman ini, menggunakan sup cantik 4 : https://www.orbitxch.com/customer/sport/1

Saya mencoba memfilter kode html untuk tag dengan class="biab_item-link biab_market-link js-event-link biab_has-time", sepertinya kode tersebut berisi setiap nama acara unik satu kali.

Ini kode saya

from bs4 import BeautifulSoup
import urllib3


http = urllib3.PoolManager()

url = 'https://www.orbitxch.com/customer/sport/1'
response = http.request('GET', url)
soup = BeautifulSoup(response.data, features="lxml")



for tag in soup.find_all("a", class_="biab_item-link biab_market-link js-event-link biab_has-time"):
        print(tag["title"])

Tapi tidak ada yang terjadi.


person Clipper    schedule 01.02.2019    source sumber


Jawaban (1)


Itu karena konten html diubah secara dinamis oleh javascript. Data berasal dari URL ini: https://www.orbitxch.com/customer/api/event-updates?eventIds=29108154,29106937,29096310,29096315,29106936,29096313,29096309,29096306,29107821,29108318,29106488,29106934,29106830,29106490,29104420 tapi sejujurnya saya tidak tahu di mana Anda dapat menemukan ID ini. URL ini mengembalikan respons JSON yang dapat Anda urai dengan mudah menggunakan pustaka Python.

person Matej    schedule 01.02.2019
comment
Terima kasih. Bagaimana Anda menemukan url asalnya? Jadi pilihan terbaik saya adalah mengurai JSON ini atau ada cara yang lebih mudah? - person Clipper; 01.02.2019
comment
@Clipper Saya menemukan ini menggunakan alat pengembangan Firefox, khususnya statistik jaringan (Chrome juga memiliki alat ini). Penguraian JSON akan menjadi cara termudah, Anda memiliki perpustakaan python untuk itu tetapi agar id di url dapat berubah, Anda harus mencari tahu di mana kode javascript menemukan id ini. - person Matej; 01.02.2019
comment
Anda juga dapat mempertimbangkan untuk menggunakan Requests-HTML yang memungkinkan memuat halaman penuh dan kemudian menguraikannya, perpustakaan http mana tidak. - person 0xInfection; 03.02.2019
comment
@InfectedDrake Itu poin yang sangat bagus, saya tidak tahu tentang perpustakaan ini. Mungkin saya akan menggunakan perpustakaan ini suatu saat nanti tetapi saya masih lebih suka membuat permintaan untuk memperbaiki situs yang berisi data yang diinginkan. - person Matej; 03.02.2019