你遇到的问题是网页内容通过JavaScript动态生成。因此,requests无法处理它,所以最好使用类似
Selenium的工具。
编辑:根据@λuser的建议,我修改了我的答案,只使用XPath搜索您要查找的元素。请注意,我使用XPath函数starts-with()来获取match-history-diff-score-dec和match-history-diff-score-inc。仅选择其中之一会使您错过近一半的相对分数更新。这就是为什么输出结果显示103个而不是56个的原因。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.mismarcadores.com/partido/Q942gje8/#punto-a-punto;1")
table = driver.find_elements_by_xpath('//td//span[starts-with(@class, "match-history-diff-score-")]')
results = []
for tag in table:
print(tag.get_attribute('innerHTML'))
print(results)
这将输出:
['+2', '+1', '+2', '+2', '+1', '+2', '+4', '+2', '+2', '+4', '+7', '+5', '+8', '+5', '+7', '+5', '+3', '+2', '+5', '+3', '+5', '+3', '+5', '+6', '+4', '+6', '+7', '+6', '+5', '+2', '+4', '+2', '+5', '+7', '+6', '+8', '+5', '+3', '+1', '+2', '+1', '+4', '+7', '+5', '+8', '+6', '+9', '+11', '+10', '+9', '+11', '+9', '+10', '+11', '+9', '+7', '+5', '+3', '+2', '+1', '+3', '+1', '+3', '+2', '+1', '+3', '+2', '+4', '+1', '+2', '+3', '+6', '+3', '+5', '+2', '+1', '+1', '+2', '+4', '+3', '+2', '+4', '+1', '+3', '+5', '+7', '+5', '+8', '+7', '+6', '+5', '+4', '+1', '+4', '+6', '+9', '+7', '+9', '+7', '+10', '+11', '+12', '+10']