为什么无法获取 www.nasdaq.com/symbol/c/stock-report 的网页内容?

-1 投票
1 回答
1148 浏览
提问于 2025-04-18 13:11

我想把 www.nasdaq.com/symbol/c/stock-report 这个网页下载成一个文件。
方法一:

from urllib.request import urlopen
url=r'http://www.nasdaq.com/symbol/c/stock-report'
urlopen(url)

但是出现了错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\Python34\lib\urllib\request.py", line 153, in urlopen
return opener.open(url, data, timeout)
File "D:\Python34\lib\urllib\request.py", line 461, in open
response = meth(req, response)
File "D:\Python34\lib\urllib\request.py", line 571, in http_response
'http', request, response, code, msg, hdrs)
File "D:\Python34\lib\urllib\request.py", line 499, in error
return self._call_chain(*args)
File "D:\Python34\lib\urllib\request.py", line 433, in _call_chain
result = func(*args)
File "D:\Python34\lib\urllib\request.py", line 579, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden

方法二:

wget -c 'http://www.nasdaq.com/symbol/c/stock-report'
'http://www.nasdaq.com/symbol/c/stock-report': Unsupported scheme.

我该怎么用程序自动下载这个网页呢?

1 个回答

0

我试了 requests,它能正常工作 - 我得到了些HTML数据和状态码200。

import requests

r = requests.get('http://www.nasdaq.com/symbol/c/stock-report')

print r.status_code
print r.text

但是 HTTP Error 403: Forbidden 可能意味着服务器把你当成了机器人、黑客、恐怖分子等等,所以不让你访问它的页面。

你的脚本需要像人类一样使用浏览器来操作,比如要设置用户代理、使用cookies、会话ID、反应时间等等。

撰写回答