使用Python进行网页爬虫
我正在尝试使用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
请求头,那么就假设客户端可以接受所有类型的媒体。