首页 文章

Python urllib2.open通过对等错误重置连接

提问于
浏览
3

我正在尝试使用python抓取一个页面

问题是,我不断通过同行重置Errno54连接 .

运行此代码时出现错误 -

urllib2.urlopen("http://www.bkstr.com/webapp/wcs/stores/servlet/CourseMaterialsResultsView?catalogId=10001&categoryId=9604&storeId=10161&langId=-1&programId=562&termId=100020629&divisionDisplayName=Stanford&departmentDisplayName=ILAC&courseDisplayName=126&sectionDisplayName=01&demoKey=d&purpose=browse")

对于这个问题上的所有网址都会发生这种情况 - 问题是什么?

2 回答

  • 0
    $> telnet www.bkstr.com 80
    Trying 64.37.224.85...
    Connected to www.bkstr.com.
    Escape character is '^]'.
    GET /webapp/wcs/stores/servlet/CourseMaterialsResultsView?catalogId=10001&categoryId=9604&storeId=10161&langId=-1&programId=562&termId=100020629&divisionDisplayName=Stanford&departmentDisplayName=ILAC&courseDisplayName=126&sectionDisplayName=01&demoKey=d&purpose=browse HTTP/1.0
    
    Connection closed by foreign host.
    

    从python或其他任何地方获取该URL都不会有任何乐趣 . 如果它在您的浏览器中有效,则必须有其他内容,例如cookie或身份验证或其他类似的东西 . 或者,可能是服务器损坏或者他们已经改变了他们的配置 .

    尝试在您之前从未访问过该网站的浏览器中打开它,然后再进行检查 . 然后登录并再次尝试 .

    编辑:毕竟是 Cookies :

    import cookielib, urllib2
    
    cj = cookielib.CookieJar()
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    #Need to set a cookie
    opener.open("http://www.bkstr.com/")
    #Now open the page we want
    data = opener.open("http://www.bkstr.com/webapp/wcs/stores/servlet/CourseMaterialsResultsView?catalogId=10001&categoryId=9604&storeId=10161&langId=-1&programId=562&termId=100020629&divisionDisplayName=Stanford&departmentDisplayName=ILAC&courseDisplayName=126&sectionDisplayName=01&demoKey=d&purpose=browse").read()
    

    输出看起来不错,但你必须检查它是否符合你的要求:)

  • 2

    最近我遇到了类似的错误 . 连接正在退出并被重置 . 我尝试过cookiejars,延迟延迟和不同的 Headers /用户,但没有任何效果 . 最后修复很简单 . 我从urllib2转到请求 . 老人;

    import urllib2
    opener = urllib2.build_opener()
    buf = opener.open(url).read()
    

    新的;

    import requests
    buf = requests.get(url).text
    

    之后一切都很完美 .

相关问题