【发布时间】:2021-10-10 09:21:33
【问题描述】:
我正在尝试自动对 SEC / EDGAR 财务报告进行网络抓取,但收到 HTTP 错误 403:禁止。我参考了类似的 Stack Overflow 表单并相应地更改了代码,但到目前为止还没有运气。
test_URL = https://www.sec.gov/Archives/edgar/data/3662/0000950170-98-000413.txt
我正在使用的代码
import urllib
def get_data(link):
hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'Accept-Encoding': 'none',
'Accept-Language': 'en-US,en;q=0.8',
'Connection': 'keep-alive'}
req = urllib.request.Request(link,headers=hdr)
page = urllib.request.urlopen(req, timeout=10)
content = page.read().decode('utf-8')
return content
data = get_data(test_URL)
得到错误
HTTPError Traceback (most recent call last)
return result
~\Anaconda3n\lib\urllib\request.py in http_error_default(self, req, fp, code, msg, hdrs)
647 class HTTPDefaultErrorHandler(BaseHandler):
648 def http_error_default(self, req, fp, code, msg, hdrs):
--> 649 raise HTTPError(req.full_url, code, msg, hdrs, fp)
650
651 class HTTPRedirectHandler(BaseHandler):
HTTPError: HTTP Error 403: Forbidden
我也尝试过使用 requests.get(test_URL) 然后使用 BeautifulSoup,但这不会返回整个文本。 还有其他我们可以遵循的方法吗?
【问题讨论】:
-
您之前是否成功处理过此请求?有时网站会在发出大量请求后阻止 IP。
-
第一次,它工作,但之后,我得到的只是这个错误
标签: python web-scraping beautifulsoup python-requests urllib