小编Joe*_*ydt的帖子

Python请求模块无法从Web服务器获取最新数据

在下面的代码片段中,您可以看到我正在尝试从NCAA Men's Basketball网站上搜集一些数据.

import requests

url = "https://www.ncaa.com/scoreboard/basketball-men/d1/"

response = requests.get(url)
html = response.text

print(html)
print(response.headers)
print("\n\n")
print(response.request.headers)
Run Code Online (Sandbox Code Playgroud)

该网站列出了游戏及其分数.我想出了如何使用Python请求获取HTTP请求所需的所有数据,然后使用BeautifulSoup从HTML中提取数据.如果您想看看,那么完整的刮刀就在这里.

问题:当请求从NCAA网站获得响应时,数据比实际网站上的数据更老(有时最多30或40分钟).

我一直在谷歌搜索这几个小时.阅读Python Requests文档后,我相信我发现NCAA Web服务器正在发送过时的数据.但我不明白为什么它会在向谷歌浏览器(或任何网络浏览器)发送正确的数据时发送我的程序过时的数据.

我认为服务器发送过期数据的原因是,当我打印响应标题时,其中一个项目是"Last-Modified":'Sat,26 Jan 2019 17:49:13 GMT',而另一个是'Date': '星期六,2019年1月26日18:20:29 GMT',所以看起来服务器在正确的时间获取请求,但提供了一段时间未被修改的数据.

我的问题:你知道为什么会这样吗?我的HTTP请求中是否需要添加一些内容,以使服务器向我发送与发送Web浏览器的内容一致的数据?

PS我很抱歉这个长期的问题.我试图保持简洁,但仍然清楚地解释事情.

python screen-scraping beautifulsoup web-scraping python-requests

7
推荐指数
1
解决办法
509
查看次数

无法将字符串从标准输入解析为浮点 - Rust

在 Rust 中将 String 类型值解析为浮点类型值时,一切都可以正常工作
"let pi: f64 = 3.14".parse().unwrap();

然而,当解析来自标准输入的 String 类型值时,即使它是完全相同的值,程序也会出现恐慌并抛出:

线程“main”在“调用Result::unwrap()一个Err 值:ParseFloatError { kind:Invalid }”时惊慌失措,src/libcore/result.rs:999:5 注意:使用RUST_BACKTRACE=1环境变量运行以显示回溯。

我检查了值的类型,它一个字符串,所以我不明白错误是什么,并且我无法找到与标准输入(stdin)和此问题相关的任何内容。还有其他人遇到过这个吗?有没有什么好的办法可以避免恐慌呢?

这是一些复制该问题的代码:

use std::io::{stdin,stdout,Write};

fn main() {
    let mut s = String::new();

    println!("Give a number ");

    stdin().read_line(&mut s)
        .expect("Did not enter a correct string");

    let user_input: f64 = s.parse().unwrap();

    println!("{:?}", user_input)
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

floating-point casting type-conversion rust

2
推荐指数
1
解决办法
3494
查看次数