我正在尝试对一个显示倒数计时器的网站进行网络抓取(目的是最终制作一个不和谐的bot,以在请求时显示计时器剩余的剩余时间)。但是,在打印数据时,输出与原始源不同。
环顾四周,我找不到解决问题的方法。我肯定会丢失一些东西,但是对它一无所知(我只是作为一个个人项目来做,很少有使用python的经验)
import requests
from bs4 import BeautifulSoup
result = requests.get("https://www.wowclassiccountdown.com/")
result.status_code
result.headers
c = result.content
soup = BeautifulSoup(c)
samples = soup.find_all("div", "fusion-digit")
samples[0]
data = {}
for div in samples:
title = div.string.strip()
data[title] = div.attrs['class']
# displays data
print(data)
我无法告诉您预期的输出是什么,因为它总是在变化,但是显然它不应该全部为0。有人可以向我解释一下吗?
答案 0 :(得分:2)
您要抓取的网站正在使用Javascript进行倒计时(尝试在网络浏览器中禁用Javascript,您会看到倒数会将自己设置为0)。不幸的是,这使得使用请求库进行报废是不可能的。
答案 1 :(得分:1)
您可以自己计算。倒计时的目标结束日期时间在请求的响应中。您可以获取当前日期时间并进行更改。我没有将小时,分钟添加到以下内容,但是从几秒钟开始就很容易
public class FileWrapper {
public static void WriteRelease(String filename, ArrayList<Object> list) throws IOException, JSONException{
File file = new File(filename);
FileWriter filew = new FileWriter(filename);
JSONArray jsonarray = new JSONArray();
//System.out.println(jsonarray.put(list).toString());
jsonarray.add(list);
System.out.println(jsonarray);
jsonarray.writeJSONString(jsonarray,filew);
filew.close();
}
}
对我来说,还有9小时的时差需要考虑。