Вывести определенное значение внутри <td> - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь напечатать определенное значение, которое находится внутри <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 Ответ

1 голос
/ 08 марта 2019

Благодаря @ 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...