java爬虫登录获取html页面
本教程提供了逐步指南,帮助 java 开发人员登录网站并获取目标页面。步骤包括:创建 http 客户端、设置登录表单数据、构造登录请求、发送登录请求、获取登录 cookie、构造页面请求、添加 cookie 到请求、发送页面请求和获取页面 html。
步骤:
1. 创建 HTTP 客户端:
使用库(例如 HttpClient、HttpURLConnection)创建 HTTP 客户端,用于向目标网站发送请求。
2. 设置登录表单数据:
收集登录表单中的字段(例如用户名、密码),并使用 Java 代码将其包装成 Key-Value 对。
3. 构造登录请求:
使用 HTTP 客户端构造一个 POST 请求,并指定登录 URL 和登录表单数据。
4. 发送登录请求:
将登录请求发送到服务器,并将服务器响应存储在 Response 对象中。
5. 获取登录 Cookie:
如果登录成功,服务器会在响应中设置一个或多个 Cookie。使用 Response 对象获取这些 Cookie 并存储在 CookieStorage 中。
6. 构造页面请求:
构造一个 GET 请求,指定要获取的页面 URL。
7. 添加 Cookie 到请求:
将从登录响应中获取的 Cookie 添加到页面请求中。
8. 发送页面请求:
使用 CookieStorage 中的 Cookie 发送页面请求。
9. 获取页面 HTML:
将服务器对页面请求的响应存储在 Response 对象中。使用该对象获取页面的 HTML。
示例代码:
import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.cookie.Cookie; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class LoginAndCrawl { public static void main(String[] args) { String loginUrl = "https://www.example.com/login"; String pageUrl = "https://www.example.com/page"; String username = "username"; String password = "password"; HttpClient httpClient = HttpClients.createDefault(); // 登录 List<NameValuePair> loginForm = new ArrayList<>(); loginForm.add(new BasicNameValuePair("username", username)); loginForm.add(new BasicNameValuePair("password", password)); HttpPost loginRequest = new HttpPost(loginUrl); loginRequest.setEntity(new UrlEncodedFormEntity(loginForm)); HttpResponse loginResponse = httpClient.execute(loginRequest); // 获取 Cookie List<Cookie> cookies = httpClient.getCookieStore().getCookies(); CookieStorage cookieStorage = new CookieStorage(cookies); // 获取页面 HttpGet pageRequest = new HttpGet(pageUrl); pageRequest.addHeader("Cookie", cookieStorage.getCookieHeaderValue()); HttpResponse pageResponse = httpClient.execute(pageRequest); // 获取 HTML HttpEntity pageEntity = pageResponse.getEntity(); InputStream inputStream = pageEntity.getContent(); Scanner scanner = new Scanner(inputStream); String html = scanner.useDelimiter("\A").next(); scanner.close(); // 解析 HTML ... } }
以上就是java爬虫登录获取html页面的详细内容,更多请关注其它相关文章!