Как я могу получить значение во многих div от html? - PullRequest
0 голосов
/ 15 января 2019

Я не могу заставить BeautifulSoup анализировать весь код с этого сайта: https://www.bcb.gov.br/

Значение, которое я хочу, находится между <app-root> ... <\app-root>, но когда я использую следующий код, то, что находится внутри тега app-root, не анализируется:

import urllib.request as urllib2

from bs4 import BeautifulSoup as bs

html = 'https://www.bcb.gov.br'

page = urllib2.urlopen(html)

soup = bs(page, 'html.parser')

print(soup)

Результат:

<!DOCTYPE doctype html>
<html lang="en"><head><meta content="IE=edge" http-equiv="X-UA-Compatible"/> 
<script>document.head.innerHTML += "<base href='" + window.location.protocol 
+ "//" + window.location.host +"/" + "'>"</script><meta charset="utf-8"/> 
<title>Banco Central do Brasil</title><meta content="width=device- 
width,initial-scale=1" name="viewport"/><link href="favicon.ico" rel="icon" 
type="image/x-icon"/><link href="https://fonts.googleapis.com/css? 
family=Cormorant+Garamond:300,300i,400,400i,500,500i,600,600i,700,700i| 
Ubuntu:300,300i,400,400i,500,500i,700,700i" rel="stylesheet"/><script 
src="assets/js/config.js"></script><link 
href="styles.ad070d90de458f2251ec.bundle.css" rel="stylesheet"/></head> 
<body><app-root></app-root><!-- Global site tag (gtag.js) - Google Analytics 
--><script async="" src="https://www.googletagmanager.com/gtag/js?id=UA- 
65460906-3"></script><script>window.dataLayer = window.dataLayer || [];
    function gtag() { dataLayer.push(arguments); }
    gtag('js', new Date());

    gtag('config', 'UA-65460906-3');</script><script 
src="inline.b9c96f03aa7f6b76c42d.bundle.js?v=5" type="text/javascript"> 
</script><script src="polyfills.a7b9da535b3a5a6fbe04.bundle.js?v=5" 
type="text/javascript"></script><script 
src="scripts.b27f0359c1c3f740a0de.bundle.js?v=5" type="text/javascript"> 
</script><script src="vendor.3d7ec463120170ac4b21.bundle.js?v=5" 
type="text/javascript"></script><script 
src="main.36b8710c7447c7df695a.bundle.js?v=5" type="text/javascript"> 
</script></body></html>

Вы можете увидеть теги <app-root></app-root> до ...Global site tag..., не показывая, что внутри них. Вот почему я не могу очистить значения, которые я хочу.

Может ли кто-нибудь мне помочь?

Ответы [ 2 ]

0 голосов
/ 15 января 2019

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

Вы можете сделать это, используя Селен или Запросы-HTML

Вот пример с Selenium:

from selenium import webdriver
from bs4 import BeautifulSoup as bs
url = 'https://www.bcb.gov.br'

driver = webdriver.Chrome("C:/chromedriver_win32/chromedriver.exe")
driver.get(url)

soup = bs(driver.page_source, 'html.parser')
0 голосов
/ 15 января 2019

Поскольку он пуст, как обслуживается сервером. Просто посмотрите обычный текст страницы.

for line in page:
  print(line)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...