我正在尝试创建一个程序,它将访问我的大学网站上一个特定的https网页,在该网页中显示我的学期成绩。我想刮一下网页,看看最终标记出来后是否有变化,然后给自己发一封电子邮件(比整天随意查看要容易)。
我以前从未做过web抓取,该站点需要登录身份验证,因此这个问题可能比我想象的要复杂得多,但到目前为止我的情况如下:
import certifi
from bs4 import BeautifulSoup
import urllib3 as u
url = "https://upnet.up.ac.za/psc/pscsmpra/EMPLOYEE/SA/c/UP_SS_MENU.UP_SS_RESULTS_FL.GBL"
http = u.PoolManager(cert_reqs='CERT_REQUIRED',ca_certs=certifi.where())
try:
r = http.request('GET',url,timeout=u.Timeout(connect=1.0, read=2.0))
except u.exceptions.NewConnectionError:
print("Connection Failed")
print(r.status)
soup = BeautifulSoup(r.data,features="html.parser")
print(soup.prettify())运行此代码将返回以下内容:
200 处理Browscap文件失败。因为它可能不见了。请与您的系统管理员联系。
如果我运行r.headers,就会得到以下信息:
{‘日期’:‘清华,2018年11月15日07:13:27格林尼治时间’,‘服务器’:'Apache',‘内容-长度’:'99',‘X-帧-选项’:'SAMEORIGIN','Set-Cookie':'appcsmpr08-7007-PORTAL-PSJSESSIONID=5T8WMyIf2lC2ZSBTaf84UZBA-tV9BLAh!631984709;domain=.up.ac.za;Path=/;HttpOnly,NSC_wt_dbnqvtqspe=ffffffff8adf14db45525d5f4f58455e445a4a422d6f;expires=Thu,15 -2018-08:09:29 GMT;path=/;dtCookie=E2152DB7F41B75674D0AE5146876F0EB|UFNDU018MQ;Path=/;域=.up.ac.za,‘X开销’:‘’,‘Content’:‘text/平原;charset=utf-8’} PS C:\Users\Shaun\Documents\Personal_Projects\markAlert>
我假设我能够连接,但我不确定上面的错误是什么意思。谷歌搜索是没有帮助的。
任何帮助如何解决这个问题,非常感谢!
发布于 2018-11-15 15:34:44
错误来自服务器,因为无法检测到您的请求用户代理,请设置它。
heads = {'user-agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/57.0'}
http = u.PoolManager(headers=heads)https://stackoverflow.com/questions/53314141
复制相似问题