这个网站我试了两下,都没有反应,没搞定。
下面是我之前常用的两种方案,希望能抛砖引玉:
方案一:通过密码直接登录(例:登录博士数学论坛)
(*登录地址,这个地址可以通过浏览器的开发者工具获取,也可以通过抓包工具(Fiddler或Wireshark)获取*)
url = "http://www.math.org.cn/member.php?mod=logging&action=login&\
loginsubmit=yes&loginhash=LFbyj";
(*存储Cookie*)
$CookieStore = Automatic;
(*提交登录信息,这里的参数名称获取方式和上面一样,也可以通过HTML中表单查看*)
hr = HTTPRequest[
url, {Method -> "POST",
"Body" -> {"username" -> "你的用户名", "password" -> "你的密码",
"cookietime" -> "2592000"}}];
(*返回响应结果*)
response = URLRead[hr, {"StatusCode", "Cookies", "Headers", "Body"}];
方案二:通过Cookie登录(例:登录知乎)
(*先通过火狐浏览器登录自己的知乎账号*)
(*连接数据库*)
Needs["DatabaseLink`"];
conn = OpenSQLConnection[
JDBC["SQLite",
First[FileNames["cookies.sqlite",
ParentDirectory[$UserBaseDirectory] <>
"\\Mozilla\\Firefox\\Profiles\\", Infinity]]]];
(*得到知乎的Cookies*)
c = SQLExecute[conn,
"select * from moz_cookies where baseDomain like '%zhihu.com'"];
(*改成Assoc形式,有些字段去掉了,如果需要再自己加上*)
ca = <|"Domain" -> #[[-3]], "Name" -> #[[2]], "Content" -> #[[3]],
"Path" -> #[[-2]], "ExpirationDate" -> #[[-1]]|> & /@
c[[;; , {2, 4, 5, 6, 7, 8}]];
(*好了,已经可以返回登录的信息了,网页的HTML源代码*)
URLRead["https://www.zhihu.com", "Body",
VerifySecurityCertificates -> True, {"Cookies" -> ca},
CharacterEncoding -> "UTF-8"]