BeautifulSoup:获取空变量

时间:2019-03-27 01:13:52

标签: python beautifulsoup

我一直在尝试获取网页中某些变量的值:

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')            

但是,dataIniciodataFim为空。我在做什么错了?

1 个答案:

答案 0 :(得分:2)

这里有几个问题。首先,汤期望字符串作为输入;检查您的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>