在下面的代码片段中,您可以看到我正在尝试从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
在 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)
提前致谢!