如何使用 jsoup 保存纽约时报链接的正文内容

How to save the body content of New York Times links using jsoup

我必须从一些不同的新闻网站(如华盛顿 Post、纽约时报和雅虎留言板)进行屏幕抓取。我使用 jsoup 来这样做,它在华盛顿 Post 等一些网站上运行良好。然而,谈到纽约时报,我用过的每一种方法都失败了。 使用这样的这段代码只是给我"Log In - The New York Times"作为内容。

String html = Jsoup.connect(urlString).maxBodySize(Integer.MAX_VALUE).timeout(600000).get().html(); 文件 = Jsoup.parse(html); 结果 = doc.title() + "\n"; 结果 += doc.body().text();

我已经使用了 cookie 并通过我的请求传递它们,但效果不佳。

Connection.Response loginForm = Jsoup.connect("https://myaccount.nytimes.com/auth/login")
     .method(Connection.Method.GET).execute();
doc = Jsoup.connect("https://myaccount.nytimes.com/auth/login")
           .data("userid", myEmail).data("password", password)
           .cookies(loginForm.cookies())
           .post();
Map<String, String> loginCookies = loginForm.cookies();
Document doc1 =  Jsoup.connect(urlString).maxBodySize(Integer.MAX_VALUE).timeout(600000)
                      .cookies(loginCookies).get();

谁能给我一个保存纽约时报 url 正文内容的方法?

如果您查看 'normal' 登录期间发送的实际数据,您会看到除了 cookie、用户名和密码之外,浏览器还会发送 'token' 等字段, 'expires' 等等,它从第一个 GET 请求中获取。在浏览器中打开开发者工具,您会看到它。

您可以轻松获得这些值。要获取令牌,您可以使用查询 - div[class="control hidden"] > input[name=token].
还要考虑更改请求的 user agent,以匹配您在 PC 上使用的浏览器 - 这样您将从网站获得相同的响应,具有相同的字段名称等。
在此处查看类似问题 how-to-loign the website