WebScraping - извлечение значения из класса td - PullRequest
1 голос
/ 29 марта 2020

Я пытаюсь написать простой файл веб-очистки Py для извлечения указанных c значений из таблицы на веб-странице, но результаты не приходят в текущем формальном. Я предполагаю, что я делаю что-то неправильно с командой soup.find.

URL = 'https://www.health.nsw.gov.au/news/Pages/20200329_01.aspx'
page = requests.get(URL)

soup = BeautifulSoup(page.content, 'html.parser')

results = soup.find('td', class_='moh-rteTableFooterOddCol-6')
print(results)

Я ожидаю значение 93 099, но печать дает результат

<td class="moh-rteTableFooterOddCol-6">93,099</td>

I ' Я также не могу преобразовать формат результатов в строку.

Снимок экрана, если это помогает A screenshot in case it helps

Ответы [ 3 ]

2 голосов
/ 29 марта 2020

Вы можете получить к нему доступ, используя свойство contents.

import requests
from bs4 import BeautifulSoup

URL = 'https://www.health.nsw.gov.au/news/Pages/20200329_01.aspx'
page = requests.get(URL)

soup = BeautifulSoup(page.content, 'html.parser')

results = soup.find('td', class_='moh-rteTableFooterOddCol-6')
if results and results.contents :
   print(int(results.contents[0].replace(',','')))

В будущем, когда вы не знаете свойств возвращаемого объекта, используйте __dict__ для декодирования объекта.

В качестве примера

>> results.__dict__
{'attrs': {'class': ['moh-rteTableFooterOddCol-6']},
 'can_be_empty_element': False,
 'cdata_list_attributes': {'*': ['class', 'accesskey', 'dropzone'],
  'a': ['rel', 'rev'],
  'area': ['rel'],
  'form': ['accept-charset'],
  'icon': ['sizes'],
  'iframe': ['sandbox'],
  'link': ['rel', 'rev'],
  'object': ['archive'],
  'output': ['for'],
  'td': ['headers'],
  'th': ['headers']},
 'contents': ['93,099'],
 'hidden': False,
 'known_xml': False,
 'name': 'td',
 'namespace': None,
 'next_element': '93,099',
 'next_sibling': None,
 'parent': <tr class="moh-rteTableFooterRow-6"><td class="moh-rteTableFooterEvenCol-6">Total</td>
 <td class="moh-rteTableFooterOddCol-6">93,099</td></tr>,
 'parser_class': bs4.BeautifulSoup,
 'prefix': None,
 'preserve_whitespace_tags': {'pre', 'textarea'},
 'previous_element': '\n',
 'previous_sibling': '\n',
 'sourceline': 1075,
 'sourcepos': 0}
1 голос
/ 29 марта 2020

Вам нужно добавить .text к results следующим образом:

print(results.text)
0 голосов
/ 29 марта 2020

изменение print(results) на print(results.string) отобразится в консоли:

93,099

это то, что вы хотели?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...