BeautifulSoup: получение пустых переменных - PullRequest
1 голос
/ 27 марта 2019

Я пытался получить значение некоторых переменных веб-страницы:

itemPage='https://dadosabertos.camara.leg.br/api/v2/legislaturas/1' 
url = urlopen(itemPage)
soupItem=BeautifulSoup(url,'lxml')
dataInicio=soupItem.find('dataInicio')
dataFim=soupItem.find('dataFim')            

Однако dataInicio и dataFim пусты. Что я делаю не так?

1 Ответ

2 голосов
/ 27 марта 2019

Здесь есть несколько проблем. Во-первых, суп ожидает строку в качестве входных данных; проверьте свой url и убедитесь, что он на самом деле <http.client.HTTPResponse object at 0x036D7770>. Вы можете read() это, которая производит строку байта JSON, которая может использоваться. Но если вы предпочитаете использовать синтаксический анализ XML, я бы рекомендовал использовать библиотеку Python request для получения необработанной строки XML (введите правильные заголовки, чтобы указать XML).

Во-вторых, когда вы создаете свой суповой объект, вам нужно передать features="xml" вместо "lxml".

Собираем все вместе:

import requests
from bs4 import BeautifulSoup

item_page = "https://dadosabertos.camara.leg.br/api/v2/legislaturas/1"
response = requests.get(item_page, headers={"accept": "application/xml"})
soup = BeautifulSoup(response.text, "xml")

data_inicio = soup.find("dataInicio")
data_fim = soup.find("dataFim")
print(data_inicio)
print(data_fim)

Выход:

<dataInicio>1826-04-29</dataInicio>
<dataFim>1830-04-24</dataFim>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...