浏览器工作时Python urllib访问被拒绝

浏览器工作时Python urllib访问被拒绝,python,python-2.7,urllib,Python,Python 2.7,Urllib,我正在尝试从此网站下载CSV文件: 如果我在Chrome浏览器中输入这个URL,csv文件下载立即开始,我会得到一个包含数千家公司数据的文件。但是,如果我使用下面的代码,我会得到一个拒绝访问错误。这个页面上没有登录,那么Python代码有什么不同之处呢 from urllib import urlopen response = urlopen('http://www.nasdaq.com/screening/companies-by-name.aspx?&render=downloa

我正在尝试从此网站下载CSV文件:

如果我在Chrome浏览器中输入这个URL,csv文件下载立即开始,我会得到一个包含数千家公司数据的文件。但是,如果我使用下面的代码,我会得到一个拒绝访问错误。这个页面上没有登录,那么Python代码有什么不同之处呢

from urllib import urlopen

response = urlopen('http://www.nasdaq.com/screening/companies-by-name.aspx?&render=download')
csv = response.read()

# Save the string to a file
csvstr = str(csv).strip("b'")

lines = csvstr.split("\\n")
f = open("C:\Users\Ankit\historical.csv", "w")
for line in lines:
   f.write(line + "\n")
f.close()

urllib2
(和类似的
urllib
)的用户代理头是
“Python-urllib/2.7”
(用您的Python版本替换2.7)

您收到403错误,因为纳斯达克服务器似乎不想将内容发送到此用户代理。您可以“欺骗”用户代理标头,然后它将成功下载。下面是一个简单的例子:

import urllib2

DOWNLOAD_URL = 'http://www.nasdaq.com/screening/companies-by-name.aspx?&render=download'

hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11'}
req = urllib2.Request(DOWNLOAD_URL, headers=hdr)

try:
    page = urllib2.urlopen(req)
except urllib2.HTTPError, e:
    print e.fp.read()

content = page.read()
print content

或者您可以使用
python请求

import requests

url = 'http://www.nasdaq.com/screening/companies-by-name.aspx'
params = {'':'', 'render':'download'}
resp = requests.get(url, params=params)
print resp.text

代理服务器在路上?