我正在尝试使用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§ionDisplayName=01&demoKey=d&purpose=browse")
对于这个问题上的所有网址都会发生这种情况 - 这是什么问题?
答案 0 :(得分:2)
$> 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§ionDisplayName=01&demoKey=d&purpose=browse HTTP/1.0
Connection closed by foreign host.
您不会从python或其他任何地方获取该URL。如果它在您的浏览器中有效,则必须有其他内容,例如cookie或身份验证或其他类似的东西。或者,可能是服务器损坏或者他们已经改变了配置。
尝试在您之前从未访问该网站的浏览器中打开它,然后再进行检查。然后登录并再试一次。
编辑:毕竟是饼干:
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§ionDisplayName=01&demoKey=d&purpose=browse").read()
输出看起来不错,但您必须检查它是否符合您的要求:)
答案 1 :(得分:0)
我最近遇到了类似的错误。连接正在退出并被重置。我尝试过cookiejars,延迟延迟和不同的标题/用户,但没有任何效果。最后修复很简单。我从urllib2转到请求。旧的;
import urllib2
opener = urllib2.build_opener()
buf = opener.open(url).read()
新的;
import requests
buf = requests.get(url).text
之后一切都很完美。