在里面打印一定的值

时间:2019-03-07 22:09:06

标签: html python-3.x parsing

我正在尝试打印<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]'])

1 个答案:

答案 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)