โจทย์การหาธาตุตามคลาสกับน้ำซุปสวยๆ

กำลังพยายามดึงชื่อกิจกรรมในเพจนี้โดยใช้ซุปสวยๆ 4 : https://www.orbitxch.com/customer/sport/1

ฉันพยายามกรองโค้ด html สำหรับแท็กที่มี class="biab_item-link biab_market-link js-event-link biab_has-time" ดูเหมือนว่าจะเป็นแท็กที่มีชื่อเหตุการณ์ที่ไม่ซ้ำกันแต่ละรายการเพียงครั้งเดียวหรือไม่

นี่คือรหัสของฉัน

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"])

แต่ไม่มีอะไรเกิดขึ้น


person Clipper    schedule 01.02.2019    source แหล่งที่มา


คำตอบ (1)


นั่นเป็นเพราะว่าเนื้อหา html มีการเปลี่ยนแปลงแบบไดนามิกโดยจาวาสคริปต์ ข้อมูลมาจาก URL นี้: https://www.orbitxch.com/customer/api/event-updates?eventIds=29108154,29106937,29096310,29096315,29106936,29096313,29096309,29096306,29107821,29108318,29106488,29106934,29106830,29106490,29104420 แต่จริงๆ แล้วฉันไม่รู้ว่าจะหา ID เหล่านี้ได้ที่ไหน URL นี้ส่งคืนการตอบสนอง JSON ซึ่งคุณสามารถแยกวิเคราะห์ได้อย่างง่ายดายโดยใช้ไลบรารี Python

person Matej    schedule 01.02.2019
comment
ขอบคุณ. คุณหา URL ที่มาได้อย่างไร ดังนั้นทางออกที่ดีที่สุดของฉันคือแยกวิเคราะห์ JSON นี้หรือมีวิธีที่ง่ายกว่านี้ - person Clipper; 01.02.2019
comment
@Clipper ฉันพบสิ่งนี้โดยใช้เครื่องมือพัฒนา Firefox สถิติเครือข่ายที่เป็นรูปธรรม (Chrome ก็มีเครื่องมือเหล่านี้ด้วย) การแยกวิเคราะห์ JSON จะเป็นวิธีที่ง่ายที่สุด คุณมีไลบรารีหลามสำหรับมัน แต่หากต้องการเปลี่ยนรหัสใน url คุณต้องค้นหาว่าโค้ดจาวาสคริปต์ค้นหารหัสเหล่านี้ได้จากที่ไหน - person Matej; 01.02.2019
comment
คุณอาจพิจารณาใช้ Requests-HTML ซึ่งอนุญาตให้โหลดหน้าเต็มแล้วแยกวิเคราะห์ ซึ่ง http ไลบรารี ไม่. - person 0xInfection; 03.02.2019
comment
@InfectedDrake นั่นเป็นจุดที่ดีมาก ฉันไม่รู้เกี่ยวกับห้องสมุดนี้ บางทีฉันอาจจะใช้ไลบรารีนี้ในอนาคต แต่ฉันยังต้องการส่งคำขอเพื่อแก้ไขไซต์ที่มีข้อมูลที่ต้องการมากกว่า - person Matej; 03.02.2019