网站抓取:输出与原始数据不同的内容

时间:2019-04-17 09:24:01

标签: python html web-scraping beautifulsoup python-requests

我正在尝试对一个显示倒数计时器的网站进行网络抓取(目的是最终制作一个不和谐的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。有人可以向我解释一下吗?

2 个答案:

答案 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小时的时差需要考虑。