我正在尝试为stats.nba.com网站编写一个webscraper。有时当我运行一个脚本时,它会以200返回代码的形式出现,但有时它会变成400错误代码。我怀疑有时可能需要回复,但不确定。这是一个四个例子,但它通常是一个更大的例子。
这是代码。
http://stats.nba.com/stats/boxscoresummaryv2?GameID=0021500001
200
http://stats.nba.com/stats/boxscoresummaryv2?GameID=0021500002
400
http://stats.nba.com/stats/boxscoresummaryv2?GameID=0021500003
400
http://stats.nba.com/stats/boxscoresummaryv2?GameID=0021500004
400
这是一个示例响应,我继续得到非常不一致的响应代码。
[HttpPost]
public ActionResult Register(UserVIewModel reg) {
if (ModelState.IsValid)
{
if (db.Users.Where(u => u.UserName == reg.UserName).Any())
{
//Do what do u need to do...
}
else
{
var m = new User {
UserName = reg.UserName,
Email = reg.Email,
FirstName = reg.FirstName,
LastName = reg.LastName,
Password = reg.Password
};
db.Users.Add(m);
db.SaveChanges();
return RedirectToAction("Login");
}
}
return View();
}
答案 0 :(得分:0)
您需要传递用户代理:
In [11]: for url in urls:
....: r = requests.get(url, headers={"user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.92 Safari/537.36"})
....: print(r.status_code)
....:
200
200
200
200
没有用户代理:
In [12]: for url in urls:
r = requests.get(url)
print(r.status_code)
....:
200
400
400
400
如果我是你,我还会考虑在请求之间添加一个睡眠。