BeautifulSoup код вопрос относительно типа данных - PullRequest
1 голос
/ 04 апреля 2019

Я не понимаю, почему это не работает.

Сейчас я работаю над финансовой таблицей по адресу:

https://finance.yahoo.com/quote/ATVI/financials?p=ATVI

Что я наденуне является результатом find_all метод.Когда я добавляю больше точечных обозначений, таких как find_all('td').children Это выдает ошибку.Может быть, моя ошибка в том, что возвращаемое значение find_all является объектом, а не списком, верно?

И я понятия не имею, почему приведенный ниже код не работает.

span_tag1=soup.find_all('td')
for i in span_tag1.children:
    print(i.get_text)

Ответы [ 4 ]

3 голосов
/ 04 апреля 2019

Так как вы находите all td элементов (что создает список), вам нужно перебрать каждый из них, а затем найти дочерние элементы каждого td элемента:

for td in soup.find_all('td'):
    for child in td.children:
        print(child.get_text())
2 голосов
/ 04 апреля 2019

Я бы пошел с пандами, чтобы получить красиво отформатированную таблицу, а затем нарезал то, что вы хотите

import pandas as pd

tables = pd.read_html('https://finance.yahoo.com/quote/ATVI/financials?p=ATVI')
print(tables[0].fillna(''))
0 голосов
/ 04 апреля 2019

Перейдите к списку span_tag1, чтобы получить каждый элемент внутри него:

import requests
from bs4 import BeautifulSoup

page = requests.get("https://finance.yahoo.com/quote/ATVI/financials?p=ATVI")
soup = BeautifulSoup(page.content, 'html.parser')

td = soup.find_all('td')

for et in td:
   for elem in et:
      print(elem.text)

OUTPUT

Revenue
12/31/2018
12/31/2017
12/31/2016
12/31/2015
Total Revenue
7,500,000
7,017,000
6,608,000
4,664,000
Cost of Revenue
2,517,000
2,501,000
.
.
0 голосов
/ 04 апреля 2019

find_all() возвращает список, поэтому вам нужно перебрать его.Затем вы можете использовать children для элементов и вызывать get_text() для них.

for td in soup.find_all('td'):
    for child in td.children:
        print(child.get_text())

Обратите внимание, что get_text() также является методом, после него необходимо заключить в скобки.

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