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

时间:2015-06-04 15:30:01

标签: jsoup screen-scraping

我必须从华盛顿邮报,纽约时报和雅虎留言板等不同的新闻网站进行屏幕抓取。我使用jsoup这样做,它与一些像华盛顿邮报这样的网站很好。然而,当谈到纽约时报时,我使用的每一种方法都失败了。 使用这样的代码只是给我“登录 - 纽约时报”作为内容。

String html = Jsoup.connect(urlString).maxBodySize(Integer.MAX_VALUE).timeout(600000).get()。html(); doc = Jsoup.parse(html); result = 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();

有人能给我一个方法来保存纽约时报网站的正文内容吗?

1 个答案:

答案 0 :(得分:0)

如果您查看在“正常”登录期间发送的实际数据,除了Cookie,用户名和密码外,您还会看到除了“令牌”,“过期”等字段之外的其他内容。它来自第一个GET请求。在浏览器中打开开发人员工具,您将看到它。

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