我一直在尝试获取网页中某些变量的值:
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
为空。我在做什么错了?
答案 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>