我正在尝试创建一个用java编写的应用程序,它使用我的大学课程搜索功能。我正在使用一个简单的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
我试着查看jsoup,但是当我去尝试jsoup选项卡并获取网址时,它会得到与get请求相同的结果。
我在http get请求和jsoup中得到的重复失败的结果是,它会显示大学的搜索页面,而不是实际的类和有关它们是否打开的信息。
我最终寻找的是一种刮取网站的方法,该网站显示课程是否有开放席位。一旦我得到网页的内容,我就可以解析它,我只是没有得到任何好的结果。
谢谢!
答案 0 :(得分:1)
您需要添加Cookie来回答初始课程提问:
课程搜索课程目录
指出您希望看到的课程 * ASU校园
* ASU Online
您只需添加
即可conn.setRequestProperty("Cookie", "onlineCampusSelection=C");
到HttpURLConnection
。
我使用Google Chrome的开发人员工具(Ctrl-Shift-I)找到了该Cookie,然后查看了Resources
标签,然后展开了Cookies
以查看webapp4.asu.edu
Cookie。
以下代码(主要是您的代码)获取您要查找的页面的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;
}
虽然,我会使用像jsoup或HTML Parser这样的真正解析器来执行实际的解析工作。