Python请求获得不一致的响应代码

时间:2016-10-01 00:12:08

标签: python python-requests

我正在尝试为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();
}

1 个答案:

答案 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

如果我是你,我还会考虑在请求之间添加一个睡眠。