Как узнать, какие теги использовать при парсинге? - PullRequest
0 голосов
/ 25 мая 2020

Есть какие-нибудь логи c какие теги нужно использовать при парсинге? Прямо сейчас я просто пробую и ошибаюсь с разными вариантами тегов, чтобы посмотреть, какой из них работает. Это занимает много времени и очень расстраивает. Я не могу понять лог c относительно того, почему некоторые теги работают, а некоторые нет. Например, приведенный ниже код работает нормально:

import requests
from bs4 import BeautifulSoup
import pandas as pd

page = requests.get('https://finance.yahoo.com/quote/IWDA.AS?p=IWDA.AS&.tsrc=fin-srch')
soup = BeautifulSoup(page.content, 'html.parser')


test1 = soup.find_all('div', attrs={'id':'app'})
print(test1)

Однако, просто небольшое изменение кода, и результат будет «Нет»:

import requests
from bs4 import BeautifulSoup
import pandas as pd

page = requests.get('https://finance.yahoo.com/quote/IWDA.AS?p=IWDA.AS&.tsrc=fin-srch')
soup = BeautifulSoup(page.content, 'html.parser')

test2 = soup.find_all('div', attrs={'id':'YDC-Lead-Stack-Composite'})
print(test2)

Есть ли какое-нибудь логическое объяснение, почему первый пример (test1) возвращает значения, и почему второй пример (test2) не возвращает никакого значения?

Есть ли эффективный способ узнать, какие теги будут работать?

HTML

1 Ответ

0 голосов
/ 25 мая 2020

Похоже, вы пытаетесь очистить реагирующее веб-приложение, что будет невозможно с помощью обычных методов очистки веб-страниц. Если вы просмотрите исходный код (перед загрузкой скриптов, вы обнаружите, что приложение не загружено (поскольку оно работает в javascript и извлекает данные).

raw source

Здесь есть два варианта:

  1. Узнать, есть ли API, который вы можете запросить (вместо очистки)
  2. Загрузить страницу в браузере и используйте селен для очистки (см. https://selenium-python.readthedocs.io/getting-started.html)
...