我正在从https://eleccionesnacionales.corteelectoral.gub.uy/ResumenResultados.htm这个网站上抓取一些数据,检查了页面并发现了
知道,我对此进行了编码,但是它只返回“ []”,我已经使用了2个小时,但是找不到解决方法
import requests
from bs4 import BeautifulSoup
url = requests.get("https://eleccionesnacionales.corteelectoral.gub.uy/ResumenResultados.htm")
soup = BeautifulSoup(url.content, "lxml")
votos = soup.find_all("span", class_="subtotal sin-margin sin-padding ")
print(votos)
答案 0 :(得分:0)
使用此JSON API。 我不知道为什么这个数字为“ 1591673487333”,但最恰当的是他的约会日期。
https://eleccionesnacionales.corteelectoral.gub.uy/JSON/ResumenGeneral_D.json?1591673487333
此JSON文件https://pastebin.com/yXvkArBv的输出
使用此代码生成数字。像这样的“ 1591673487333”
import time
millis = int(round(time.time() * 1000))
print(millis)
示例:
import time
import urllib.request, json
millis = int(round(time.time() * 1000))
with urllib.request.urlopen("https://eleccionesnacionales.corteelectoral.gub.uy/JSON/ResumenGeneral_D.json?" + str(millis)) as url:
data = json.loads(url.read().decode())
print(data)
print(data[0]['EleccionNacional'][0]['LemaNombre']) # Partido Frente Amplio
print(data[0]['EleccionNacional'][0]['Total']) # 949376
答案 1 :(得分:0)
此代码将为您提供输出
import requests
from bs4 import BeautifulSoup
url = requests.get("https://eleccionesnacionales.corteelectoral.gub.uy/ResumenResultados.htm")
soup = BeautifulSoup(url.content, "lxml")
# print(soup)
votos = soup.find_all("span", {"class":"subtotal sin-margin sin-padding"})
for span in votos:
print(span.text)
print(votos)
这是所有网站的常规程序。但是您提供的网站正在使用某些模板引擎,并且数据显示为某些变量,如下所示:
{{Total | format . 0 }}
程序的输出将是
{{Total | format . 0 }}
{{Total | format . 0 }}
[<span class="subtotal sin-margin sin-padding">{{Total | format . 0 }}</span>, <span class="subtotal sin-margin sin-padding">{{Total | format . 0 }}</span>]
但是,如果您想获取它,请参考以下页面:How to retrieve the values of dynamic html content using Python
它将使用selenium和chrome驱动程序来获取实际的渲染站点并使用它来剪贴数据。