Соскоб в Интернете от Google Finance: возвращаемый список данных всегда пуст - PullRequest
1 голос
/ 23 июня 2019

Я бы хотел получить данные (например, рыночную капитализацию, коэффициент PE и т. Д.) Из Google Finance, используя BeautifulSoup-библиотеку Python.Однако, когда я пытаюсь извлечь некоторые отрывки (например, «div», «tr», «td») из html-кода соответствующего сайта Google Finance, используя функцию «find_all», я всегда получаю пустой список (т.е., «базовый» объект в приведенном ниже коде пуст).

Во время отладки я распечатал объект «суп» и сравнил его содержимое с соответствующим html-кодом.Что меня удивило, так это то, что содержимое объекта «суп» отличается от содержимого html-кода.Я ожидаю, что оба должны совпадать, чтобы извлечь данные успешно.

from bs4 import BeautifulSoup
import urllib.request

opener = urllib.request.build_opener()
opener.addheaders = [('User-Agent', 'Mozilla/5.0')]
response = opener.open('https://www.google.com/search?q=NASDAQ:GOOGL')

soup = BeautifulSoup(response, 'html.parser')
base = soup.find_all('div',{'class':'ZSM8k'})

print(soup)
print(base)

1 Ответ

0 голосов
/ 23 июня 2019

Все содержимое зависит только от сервера, поэтому лучшее, что вы можете сделать, - это убедиться, что ваш запрос максимально похож на запрос, отправленный браузером. В вашем случае это может означать:

opener.addheaders = [('User-Agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36')]

Если я не ошибаюсь, это дает вам то, что вы хотите. Вы можете попробовать удалить ненужные детали методом проб и ошибок, если хотите.

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