html 尝试从网页获取元素时始终返回“None”

vbkedwbf  于 2023-10-14  发布在  其他
关注(0)|答案(2)|浏览(121)

我试图从这个页面上的“整体比赛统计”中获得胜利:https://www.fctables.com/teams/sunderland-194998/?template_id=11。我尝试的所有操作都返回“无”。这不是我尝试使用的唯一页面,但每个页面似乎都返回“无”。我在这方面不是很先进,所以任何帮助都将不胜感激。

from bs4 import BeautifulSoup
import requests

URL = "https://www.fctables.com/teams/sunderland-194998/"
response = requests.get(URL)

soup = BeautifulSoup(response.text, "html.parser")

wins = soup.find('div', class_='text-success ')
print(wins)

我需要它来输出'6'这是胜利的数量。最好是整数。

5gfr0r5j

5gfr0r5j1#

您可以更改选择标记的方式:

import requests
from bs4 import BeautifulSoup

URL = "https://www.fctables.com/teams/sunderland-194998/?template_id=11"
response = requests.get(URL)

soup = BeautifulSoup(response.text, "html.parser")

stats = {}
for li in soup.select("h3:-soup-contains('Overall matches stats') + div li"):
    stats[li.p.text] = li.div.text

print(stats["Wins"])

图纸:

6

stats是一个字典,包含:

{
    "Matches": "11",
    "Goals": "20",
    "per game": "1.82",
    "Wins": "6",
    "Draws": "1",
    "Losses": "4",
    "Over 2.5": "72.7%",
    "Over 1.5": "81.8%",
    "CS": "36.36%",
    "BTTS": "45.45%",
}
dxxyhpgq

dxxyhpgq2#

BeautifulSoup是一个著名的包,它允许您解析其他人的HTML垃圾,就好像它是语法正确的一样。HTML的语法有点复杂。
你被类名中的结尾空格卡住了。把它剥掉。

>>> from pprint import pp
>>>
>>> pp(soup.find_all('div', class_='text-success '))
[]
>>> pp(soup.find_all('div', class_='text-success'))
[<div class="text-success">11</div>,
 <div class="text-success">1.83</div>,
 <div class="text-success">4</div>,
 <div class="text-success">4/6</div>,
 <div class="text-success">5/6</div>,
 <div class="text-success">2/6</div>,
 <div class="text-success">2/6</div>,
 <div class="text-success">41</div>,
 <div class="text-success">2.16</div>,
 <div class="text-success">11</div>,
 <div class="text-success">78.9%</div>,
 <div class="text-success">89.5%</div>,
 <div class="text-success">21.05%</div>,
 <div class="text-success">68.42%</div>]

Steve Harvey想知道,“SPACE能成为有效类名的一部分吗?“调查说“不!“,则特别禁止使用空格字符。

相关问题