我正在尝试打印<td>
中的某些值。
我从网页上获得的值看起来像这样:
<b>General Information</b>
<table width="400">
<tr>
<td>Hostname</td>
<td>jade.nephrite.ro - Quest special | Roata Norocului</td>
</tr>
<tr>
<td>Gamemode</td>
<td>nephrite, 04 Mar 2019 14:52:55</td>
</tr>
<tr>
<td>Players</td>
<td>330 / 1000</td>
</tr>
<tr>
<td>Map</td>
<td>RO/EN</td>
</tr>
<tr>
<td>Weather</td>
<td>5</td>
</tr>
<tr>
<td>Time</td>
<td>23:00</td>
</tr>
<tr>
<td>Version</td>
<td>0.3.7-R2</td>
</tr>
<tr>
<td>Password</td>
<td>No</td>
</tr>
</table>
<br />
<b>Online Players</b>
<br /><i>None</i>
我正在尝试仅打印<td>330 / 1000</td>
下的<td>Players</td>
。我尝试了很多可以在Google上找到的方法,但遗憾的是,没有一种方法对我有用,因为我没有python的丰富经验,并且无法编辑代码,因此无法在我的表中使用。
当前代码:
import requests
url = "http://crowned.ro/api/test.php"
headers = {
'User-Agent': 'Mozilla/5.0',
}
response = requests.get(url, headers=headers)
infos = response.text
#infos = response.json()
print(infos.find("Players"))
#print(infos['[Players]'])
答案 0 :(得分:1)
由于@ jon-clements,我看了看BeautifulSoup4并学到了一些用法。 解决方案是:
soup = BeautifulSoup(infos, 'html.parser')
print(soup.find('td', text='Players').find_next_sibling('td').text)
所以一切现在看起来像这样:
import requests
from bs4 import BeautifulSoup
url = "http://crowned.ro/api/test.php?sv=jade.nephrite.ro"
headers = {
'User-Agent': 'Mozilla/5.0',
}
response = requests.get(url, headers=headers)
infos = response.text
soup = BeautifulSoup(infos, 'html.parser')
print(soup.find('td', text='Players').find_next_sibling('td').text)