使用Python进行Web抓取

Son*_*nia 2 python urllib2 web-scraping

我正在尝试使用urllib2和BeautifulSoup 来抓取网站http://www.nseindia.com.不幸的是,当我尝试通过Python访问页面时,我不断获得403 Forbidden.我认为这是一个用户代理问题,但改变它没有帮助.然后我认为它可能与cookie有关,但显然通过链接加载页面与cookie关闭工作正常.什么可能通过urllib阻止请求?

phi*_*hag 9

Accept无论出于何种原因,http: //www.nseindia.com/似乎都需要标题.这应该工作:

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()
Run Code Online (Sandbox Code Playgroud)

拒绝没有Accept标题的请求是不正确的; RFC 2616明确指出

如果不存在Accept头字段,则假定客户端接受所有媒体类型.

  • @RoundTower我捕获了一个工作请求(由Chromium提供),并在Python中添加了完全相同的头文件.一旦它工作,我试图删除每个HTTP标头,直到它没有. (5认同)