Как веб-очистить содержимое, созданное JavaScript? - PullRequest
0 голосов
/ 21 октября 2019

Хочу все поковырять в разделе «Примечания к финансовой отчетности». Как я могу это сделать? Это ссылка на веб-страницу: Пожалуйста, нажмите

Это снимок экрана: Screenshot

Каждый пункт в разделе «Примечания к финансовой отчетности»"генерируется после нажатия на ссылку. Я хочу получить источник каждого элемента и проанализировать его, например, «Сводка основных учетных политик».

Спасибо!

Обновлено: 2019-10-22

Теперь мой вопрос сводится к тому, как я могу извлечь идентификаторы (т. Е. R9, r10 и т. Д.) Из следующего. Он находится в одном из

s, у которого class = "accordion". Существует href = "# "id =" menu_cat2 "в .

Не лучший код. Вот как мне удалось это сделать:

   lis = soup.select("li.accordion")
   notes = [str(li) for li in lis if "menu_cat3" in str(li)]
   ids = re.findall(r'id="(r\d+)"', notes[0])

source

Ответы [ 2 ]

2 голосов
/ 21 октября 2019

Вы можете использовать селен или скрап https://selenium -python.readthedocs.io / index.html

Подход:

https://selenium-Python.readthedocs.io / navigating.html

Перейти к этой ссылке Щелкните по этому элементу html - это можно сделать с помощью селекторов xpath или css Получить текстовое содержимое

1 голос
/ 22 октября 2019

Страница делает запросы на основе идентификаторов из списка в этом разделе. Соберите идентификаторы, преобразуйте в верхний регистр и сделайте те же самые запросы. Требуется BS4 4.7.1 +

from bs4 import BeautifulSoup as bs
import requests

with requests.Session() as s:
    s.headers = {'User-Agent':'Mozilla/5.0'}
    r = s.get('https://www.sec.gov/cgi-bin/viewer?action=view&cik=320193&accession_number=0000320193-18-000145&xbrl_type=v#')
    soup = bs(r.content, 'lxml')
    urls = [f'https://www.sec.gov/Archives/edgar/data/320193/000032019318000145/{i["id"].upper()}.htm' for i in soup.select('li:has(#menu_cat3) .accordion')]

    for url in urls:
        r = s.get(url)
        soup = bs(r.content, 'lxml')
        print([i.text for i in soup.select('font')])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...