首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mechanize、bs4、urllib、urlib2无法打开nseindia.com

mechanize、bs4、urllib、urlib2无法打开nseindia.com
EN

Stack Overflow用户
提问于 2014-08-30 00:29:13
回答 1查看 251关注 0票数 1
代码语言:javascript
复制
import mechanize
br = mechanize.Browser()
url = 'http://nseindia.com'
br.oprn(url)

错误是

代码语言:javascript
复制
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/mechanize/_mechanize.py", line 203, in
open
    return self._mech_open(url, data, timeout=timeout)
  File "/usr/local/lib/python2.7/dist-packages/mechanize/_mechanize.py", line 255, in
_mech_open
    raise response
httperror_seek_wrapper: HTTP Error 403: request disallowed by robots.txt

我试着像这样想……

代码语言:javascript
复制
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.
1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]

br.set_handle_equiv(False)


br.set_handle_equiv(False)
EN

回答 1

Stack Overflow用户

发布于 2014-08-30 00:33:08

您需要传递一个Accept报头:

代码语言:javascript
复制
import mechanize

br = mechanize.Browser()

br.addheaders = [
    ('User-Agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36'),
    ('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8')
]

url = 'http://nseindia.com'
br.open(url)

然后,为了证明它是有效的,使用BeautifulSoup解析响应并获得页面标题:

代码语言:javascript
复制
soup = BeautifulSoup(br.response())
print soup.title.text 

打印:

代码语言:javascript
复制
NSE - National Stock Exchange of India Ltd.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25572391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档