Используйте BeautifulSoup, чтобы очистить несколько сайтов - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь получить тикеры для нескольких сайтов, используя BeautifulSoup.Я попробовал следующий код с циклом, но когда я запускаю вывод, он дает мне только один тикер для одного сайта:

url = ['https://finance.yahoo.com/quote/AAPL/key-statistics/', 'https://finance.yahoo.com/quote/BOX/key-statistics/']

for pg in url: 
    page = requests.get(pg)

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

ticker = soup.find("h1", attrs={"data-reactid":"7"}).text

ticker

Вывод:

Out[147]: 'BOX - Box, Inc.'

Затем я попытался использовать appendфункция:

data = [ ]
data.append(ticker)

но все равно дает мне только один результат.Здесь что-то не так?

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Ваш код идеален. Что вы сделали, вы сохранили soup вне цикла for, следовательно, он принимает только last url, а не все urls.Теперь попробуйте это.

url = ['https://finance.yahoo.com/quote/AAPL/key-statistics/', 'https://finance.yahoo.com/quote/BOX/key-statistics/']

for pg in url:
    page = requests.get(pg)
    soup = BeautifulSoup(page.content, "html.parser")
    ticker = soup.find("h1", attrs={"data-reactid":"7"}).text
    print("Output :- " + ticker)

Вывод: -

Output :- AAPL - Apple Inc.
Output :- BOX - Box, Inc.
0 голосов
/ 21 февраля 2019

Ваш код имеет неверный отступ, но когда я запускаю это:

from bs4 import BeautifulSoup
import requests

url = ['https://finance.yahoo.com/quote/AAPL/key-statistics/', 'https://finance.yahoo.com/quote/BOX/key-statistics/']

data = []
for pg in url:
    page = requests.get(pg)
    soup = BeautifulSoup(page.content, "html.parser")
    ticker = soup.find("h1", attrs={"data-reactid":"7"}).text
    data.append(ticker)

print(data)

, я получаю это:

['AAPL - Apple Inc.', 'BOX - Box, Inc.']

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