[英]Help scraping HTML with JSoup
这里有一点初学者,正在开展一个个人项目,将我的学校课程设置变成一个易于阅读的表格格式,但是在从网站上抓取数据的最初步骤时遇到了麻烦。
我刚刚在eclipse中将JSoup库添加到了我的项目中,在使用Jsoup的文档时,我现在无法初始化连接。
最后,我的目标是获取每个班级名称/时间/描述,但是现在我想抓住这个名字。 源网站的HTML显示如下:
<td class='CourseNum'><img src='images/minus.gif' class='ICS3330 SW' onclick="toggledetails('CS3330')
我的第一个猜测是getElementsByTag(td),然后查询这些元素的onclick =参数或'class'参数的值,通过删除最初的“I”和后面的“SW”来清理它名称“CS3330”。
现在进入实际实施:
Document doc = Jsoup.parse("UTF-8", "http://rabi.phys.virginia.edu/mySIS/CS2/page.php?Semester=1118&Type=Group&Group=CompSci").get();
Elements td = doc.getElementsByTag("td");
在这一点上,我已经遇到了问题(尽管我并没有偏离文档中提供的示例),并希望得到一些关于让我的代码运行的指导!
编辑:GOT IT! 谢谢你们!
我刚刚下载了JSoup,并在你学校的网站上试了一下,得到了这个输出:
Unit: Computer Science
CS 1010: Introduction to Information Technology
CS 1110: Introduction to Programming
CS 1111: Introduction to Programming
CS 1112: Introduction to Programming
CS 1120: From Ada and Euclid to Quantum Computing and the World Wide Web
CS 2102: Discrete Mathematics I
CS 2110: Software Development Methods
CS 2150: Program and Data Representation
CS 2220: Engineering Software
CS 2330: Digital Logic Design
CS 2501: Special Topics in Computer Science
CS 3102: Theory of Computation
CS 3330: Computer Architecture
CS 4102: Algorithms
CS 4240: Principles of Software Design
CS 4414: Operating Systems
CS 4444: Introduction to Parallel Computing
CS 4457: Computer Networks
CS 4501: Special Topics in Computer Science
CS 4753: Electronic Commerce Technologies
CS 4810: Introduction to Computer Graphics
CS 4993: Independent Study
CS 4998: Distinguished BA Majors Research
CS 6161: Design and Analysis of Algorithms
CS 6190: Computer Science Perspectives
CS 6354: Computer Architecture
CS 6444: Introduction to Parallel Computing
CS 6501: Special Topics in Computer Science
CS 6610: Programming Languages
CS 7457: Computer Networks
CS 7993: Independent Study
CS 7995: Supervised Project Research
CS 8501: Special Topics in Computer Science
CS 8524: Topics in Software Engineering
CS 8897: Graduate Teaching Instruction
CS 8999: Thesis
CS 9999: Dissertation
太酷了! 弗拉德是对的; 使用connect(...)方法。 弗拉德1+
其他建议和提示:
这些是我在我的小程序中使用的常量:
private static final String URL = "http://rabi.phys.virginia.edu/mySIS/CS2/" +
"page.php?Semester=1118&Type=Group&Group=CompSci";
private static final String TD_TAG = "td";
private static final String CLASS_ATTRIB = "class";
private static final String CLASS_ATTRIB_UNIT_NAME = "UnitName";
private static final String CLASS_ATTRIB_COURSE_NUM = "CourseNum";
private static final String CLASS_ATTRIB_COURSE_NAME = "CourseName";
这些是我在抓取方法中使用的变量:
String unitName = "";
List<String> courseNumbNameList = new ArrayList<String>();
String courseNumbName = "";
编辑1
根据你最近的评论,我认为你过分思考了一些事情。 对我来说效果很好的是这个简单的算法:
td.get(i);
获取每个Element元素td.get(i);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.