Не удается найти результаты поиска Google с BS4 - Python - PullRequest
1 голос
/ 13 апреля 2020

Я пытаюсь вернуть цену акций из поиска Google, но результаты BS4 более 300 строк.

введите описание изображения здесь

Вот мой код:

import bs4, requests

exampleFile = requests.get('https://www.google.com/search?q=unip6')
exampleSoup = bs4.BeautifulSoup(exampleFile.text, features="html.parser")
elems = exampleSoup.select('div', {"class": 'IsqQVc NprOob'})
print(len(elems))
for each in elems:
    print(each.getText())
    print(each.attrs)
    print('')

Мне бы хотелось, чтобы в результате была только цена: '23, 85 '

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

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

for s in soup.select("div"):
    if 'Latest Trade' in s.text:
        print(s.text.split('Latest Trade. ')[1].split('BRL')[0])
        break

Вывод:

23.85
0 голосов
/ 13 апреля 2020

Используя Yahoo Yahoo, вы можете попробовать:

import pandas as pd
from datetime import datetime, timedelta

now =  datetime.now() # time now
past = int((now - timedelta(days=30)).timestamp()) # 30 days ago
now = int(now.timestamp())

ticker = "UNIP6.SA" # https://finance.yahoo.com/quote/UNIP6.SA/
interval = "1d" # "1wk" , "1mo"
df = pd.read_csv(f"https://query1.finance.yahoo.com/v7/finance/download/{ticker}?period1={past}&period2={now}&interval={interval}&events=history")
print(df.iloc[-1]['Close'])

# 23.85

Демо

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