gpt4 book ai didi

java - Java中的屏幕抓取

转载 作者:行者123 更新时间:2023-11-30 11:25:08 24 4
gpt4 key购买 nike

我正在尝试创建一个用 java 编写的应用程序,它使用我的大学类(class)搜索功能。我正在使用带有以下代码的简单 http get 请求:

public static String GET_Request(String urlToRead) {

java.net.CookieManager cm = new java.net.CookieManager();
java.net.CookieHandler.setDefault(cm);

URL url;
HttpURLConnection conn;
BufferedReader rd;
String line;
String result = "";

try {

url = new URL(urlToRead);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
while ((line = rd.readLine()) != null) {
result += line;
}

rd.close();

}
catch (Exception e) {
e.printStackTrace();
}
return result;
}

但它不起作用。

这是我要抓取的网址: https://webapp4.asu.edu/catalog/classlist?c=TEMPE&s=CSE&n=100&t=2141&e=open&hon=F

我通过 http get 请求和 jsoup 得到的反复失败的结果是,它打开了大学的搜索页面,但没有打开有关它们是否开放的实际类(class)和信息。

我最终要寻找的是一种抓取显示类(class)是否有空位的网站的方法。一旦我获得网页的内容,我就可以解析它,但我没有得到任何好的结果。

谢谢!

最佳答案

您需要添加一个 cookie 来回答最初的类(class)设置问题:

class search course catalog
Indicate which course offerings you wish to see
* ASU Campus
* ASU Online

你只需添加

conn.setRequestProperty("Cookie", "onlineCampusSelection=C");

HttpURLConnection

我使用 Google Chrome 的开发者工具 (Ctrl-Shift-I) 找到了 cookie,并查看了 Resources 选项卡,然后展开 Cookies 以查看 webapp4。 asu.edu cookies。

以下代码(大部分是您的代码)获取您要查找的页面的 HTML:

public static void main(String[] args) {
System.out.println(download("https://webapp4.asu.edu/catalog/classlist?c=TEMPE&s=CSE&n=100&t=2141&e=open&hon=F"));
}

static String download(String urlToRead) {
java.net.CookieManager cm = new java.net.CookieManager();
java.net.CookieHandler.setDefault(cm);
String result = "";
try {
URL url = new URL(urlToRead);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Cookie", "onlineCampusSelection=C");

BufferedReader rd = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
result += line + "\n";
}
rd.close();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}

不过,我会使用真正的解析器,例如 jsoupHTML Parser做实际的解析工作。

关于java - Java中的屏幕抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20446230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com