使用Python进行网页爬虫

2 投票
1 回答
2061 浏览
提问于 2025-04-16 23:02

我正在尝试使用urllib2和BeautifulSoup从网站 http://www.nseindia.com 抓取数据。但是,当我通过Python访问这个页面时,总是遇到403 Forbidden的错误。我原以为是用户代理的问题,但更改后也没有解决。接着我想可能和cookies有关,但实际上,关闭cookies后通过链接加载页面是没问题的。那么,是什么原因导致urllib的请求被阻止呢?

1 个回答

9

看起来http://www.nseindia.com/这个网站需要一个叫做Accept的请求头,具体原因不太清楚。你可以试试下面这个方法:

import urllib2
r = urllib2.Request('http://www.nseindia.com/')
r.add_header('Accept', '*/*')
r.add_header('User-Agent', 'My scraping program <author@example.com>')
opener = urllib2.build_opener()
content = opener.open(r).read()

不接受没有Accept请求头的请求其实是不对的;RFC 2616中明确说明了:

如果没有Accept请求头,那么就假设客户端可以接受所有类型的媒体。

撰写回答