我正在尝试抓取Coursera中的一些网页,这对于课程结束后的审核非常重要,例如教学大纲,家庭作业等。
我正在使用wget,但我发现登录是必需的。所以我尝试了两个帖子:1 2。 他们都没有工作。
我发现Coursera网页不以* .html或* .htm结尾。 有没有办法在Coursera中使用wget登录和下载网页?
答案 0 :(得分:1)
此Python程序包https://github.com/dgorissen/coursera-dl可能更适用于您要求的内容,但它不会使用 wget 并使用和需要Python。使用Python 2.7和pip包的作者注释。此软件包的优点是您可以一次性下载与课程相关的所有内容。
请注意,在首次打开课程页面之前,您需要接受Coursera课程的荣誉代码,然后才能按照主项目页面和README.md中的说明正确运行此脚本。与github.com上的至少一个项目不同,该项目在过去6个月内通过最新更新得到积极维护。
我强烈建议你在我自己的Windows测试中查看其中一个Python软件包(除非你在另一个平台上找到与wget的区别),看来wget工具本身尽管在任一命令中都包含--no-check-certificate
,但仍然存在Coursera安全证书的问题。
此测试是使用版本字符串中基于mingw32构建的 GNU Wget 1.14 完成的。最后,请注意Coursera登录协议的v1和v3都遇到了相同的结果。
wget(使用Coursera Login v1,也来自下面的评论):
wget --save-cookies=cookies.txt --no-check-certificate --keep-session-cookies
--post-data="email=email@example.com&password=mypassword&webrequest=true"
https://accounts.coursera.org/api/v1/login?
Resolving accounts.coursera.org (accounts.coursera.org)... 54.225.163.33, 107.20
.232.186, 54.243.110.245
Connecting to accounts.coursera.org (accounts.coursera.org)|54.225.163.33|:443..
. connected.
WARNING: cannot verify accounts.coursera.org's certificate, issued by ...
Unable to locally verify the issuer's authority.
HTTP request sent, awaiting response... 400 Bad Request
ERROR 400: Bad Request.
wget更新(使用Coursera Login v3):
请注意,wget(在Windows上测试)似乎不适用于Coursera Login v1(下面的评论)或Coursera Login v3(紧接在下面:
wget https://accounts.coursera.org/api/login/v3/login? --save-cookies cookies.txt
--keep-session-cookies --no-check-certificate --post-data
"email=email@example.com&password=mypassword&webrequest=true"
Resolving accounts.coursera.org (accounts.coursera.org)... 50.19.244.62, 107.20.
145.110, 54.221.210.127
Connecting to accounts.coursera.org (accounts.coursera.org)|50.19.244.62|:443...
connected.
WARNING: cannot verify accounts.coursera.org's certificate, issued by ...
Unable to locally verify the issuer's authority.
HTTP request sent, awaiting response... 400 Bad Request
ERROR 400: Bad Request.