【问题标题】:Crawling with urllib2 and mechanize is throwing error to me使用 urllib2 和 mechanize 爬行会给我带来错误
【发布时间】:2015-01-21 10:51:43
【问题描述】:

我正在使用 urllib2 和机械化抓取一些网站,但其中一些给我错误

当我使用 urllib2 进行爬网时,它给了我 HTTPError: HTTPError()

urllib2的代码

import urllib2
response=urllib2.urlopen('http://proxygaz.com/country/india-proxy/').read()

错误

HTTPError: HTTPError()

当我使用 mechanize 进行爬网时,它给了我 httperror_seek_wrapper: >>

机械化的代码

import mechanize
from mechanize import Browser

br = Browser()
br.open('http://proxygaz.com/country/india-proxy/').read()

错误

httperror_seek_wrapper: >>

【问题讨论】:

    标签: python urllib2 mechanize


    【解决方案1】:

    urllib2.urlopen() 示例中,例外是:

    urllib2.HTTPError: HTTP Error 403: Forbidden
    

    由于某种原因,您无权访问该资源......它是用户代理。它适用于requests,或者您可以按如下方式更改用户代理:

    import urllib2
    
    request = urllib2.Request('http://proxygaz.com/country/india-proxy/', headers={'User-Agent': 'Mozilla/5.0'})
    response = urllib2.urlopen(request)
    

    【讨论】:

    • 你的答案看起来很熟悉
    • @PadraicCunningham:和你一样!虽然风格有一些变化......但你的不起作用:)
    • 好吧,我确实先把它写下来了;)
    • 实际上,你没有。你在我之后添加了代码......这并不重要......而且你确实有一个 NameError。
    • 哈哈,你的想象力很好,你昨天实际上也在一个子流程问题上做到了,
    【解决方案2】:

    遇到同样的错误,请尝试使用用户代理或requests

    import requests
    
    response=requests.get('http://proxygaz.com/country/india-proxy/')
    print(response.status_code)
    200
    

    使用代理可以正常工作:

    import urllib2
    
    resp = urllib2.Request('http://proxygaz.com/country/india-proxy/')
    resp.add_header('User-Agent', 'FIREFOX')
    opener = urllib2.build_opener()
    print  opener.open(resp).read()
    

    【讨论】:

    • 我认为您的意思是 request 而不是 resp
    • 好吧,我有点小气,但你已经创建了一个名为 respRequest 对象(我假设它是“响应”)。
    • @mhawke,该代码可以正常工作并执行应有的操作我不会担心变量名。无论如何,你得到了你的支持,所以你应该很高兴,模仿是最高形式的奉承,所以再次感谢;)
    猜你喜欢
    • 1970-01-01
    • 2013-01-05
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    相关资源
    最近更新 更多