您的位置:首页 > 理论基础 > 计算机网络

2016专题训练II-黄华 网络爬虫

2016-07-21 13:34 351 查看


目标

编写一个网络爬虫程序,自动获取指定网址 http://acm.hdu.edu.cn/showproblem.php?pid=1001 页面中所关注的信息,该网址中 1001 为题目编号,可以修改为其他题目编号。要求获取的信息包括:

l 题目;

l 时间限制;

l 内存限制;

l 提交总数;

l 通过的提交数;

l 题面描述;

l 输入;

l 输出;

l 输入样例;

l 输出样例;

l 作者;

提示:可以使用 Jsoup 等第三方组件。

注意:本题需通过文件打包的方式提交。

//这个题很简单。

在开始敲代码之前,先做准备工作

1,下载 JSON包引入Eclipse,作为第三方库(不知咋上传,百度一下吧)

2,打开一个浏览器,访问你要抓取数据的网页(这里是杭电oj ),然后按 F12 查看网页布局,这里如果你熟悉 php html啥的就更简单了,先把要抓取的数据的特性记下来

3,开始写代码

https://github.com/RenjiaLu9527/Something_i/blob/master/%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB


我写的比较简陋,不过大致熟悉了爬虫的流程,

这里借鉴一下  

小M的博客园 

的文章,感谢
原文链接:http://www.cnblogs.com/xiaoMzjm/p/3899366.html?utm_source=tuicool&utm_medium=referral

select详解
描述测试的HTML代码select写法结果
通过
标签名
来查找
<span>33</span>
<span>25</span>


 
Elements elements = doc.select("span");


 

注:通过标签来查找,直接写 "标签名" 就好,不需要尖括号。
33
25


 
通过 
id 
来查找
 

<span  id=\"mySpan\">36</span>

<span>20</span>


 
 

Elements elements = doc.select("#mySpan");


 注:通过id来查找,使用方法跟css指定元素一样,用#
36


 
 通过
 class名
 来查找
 

<span class=\"myClass\">36</span>
<span>20</span>


 
 
 

Elements elements = doc.select(".myClass");


注:通过id来查找,使用方法跟css指定元素一样,用 
36


 
 利用标签内 
属性名
 查找元素
 

<span class=\"class1\" id=\"id1\">36</span>
<span class=\"class2\" id=\"id2\">36</span>


 
 

Elements elements = doc.select("span[class=class1]span[id=id1]");


 注:规则为 标签名【属性名=属性值】,标签名可写可不写,多个属性即多个【】,如上。
 

36


 
利用标签内 
属性名前缀 
查找元素
 

<span class=\"class1\" >36</span>
<span class=\"class2\" >22</span>


 
 

Elements elements = doc.select("span[^cl]");


 注:规则为 标签名【^属性名前缀】,标签名可写可不写,多个属性即多个【】。
 

36
22


 
 利用标签内
属性名+正则表达式
查找元素
 

<span class=\"ABC\" >36</span>
<span class=\"ADE\" >22</span>


 
 

Elements elements = doc.select("span[class~=^AB]");


 注:规则为 标签名【属性名~=正则表达式】,以上的正则表达式的意思是查找以class值以AB为开头的标签,标签名可写可不写,多个属性即多个【】
 

36


 
 利用标签
文本包含某些内容
来查找
 

<span>36</span>
<span>22</span>


 
 
 

Elements elements = doc.select("span:contains(3)");


 注:规则为 标签名:contains(文本值)
 

36


 
 利用标签
文本包含某些内容+正则表达式
来查找
 

<span>36</span>
<span>22</span>


 
 

Elements elements = doc.select("span:matchesOwn(^3)");


 注:规则为 标签名:matchesOwn(正则表达式),以上的正则表式的意思是以文本值以3为开头的标签
 

36


 

select详解
描述测试的HTML代码select写法结果
通过
标签名
来查找
<span>33</span>
<span>25</span>


 
Elements elements = doc.select("span");


 

注:通过标签来查找,直接写 "标签名" 就好,不需要尖括号。
33
25


 
通过 
id 
来查找
 

<span  id=\"mySpan\">36</span>

<span>20</span>


 
 

Elements elements = doc.select("#mySpan");


 注:通过id来查找,使用方法跟css指定元素一样,用#
36


 
 通过
 class名
 来查找
 

<span class=\"myClass\">36</span>
<span>20</span>


 
 
 

Elements elements = doc.select(".myClass");


注:通过id来查找,使用方法跟css指定元素一样,用 
36


 
 利用标签内 
属性名
 查找元素
 

<span class=\"class1\" id=\"id1\">36</span>
<span class=\"class2\" id=\"id2\">36</span>


 
 

Elements elements = doc.select("span[class=class1]span[id=id1]");


 注:规则为 标签名【属性名=属性值】,标签名可写可不写,多个属性即多个【】,如上。
 

36


 
利用标签内 
属性名前缀 
查找元素
 

<span class=\"class1\" >36</span>
<span class=\"class2\" >22</span>


 
 

Elements elements = doc.select("span[^cl]");


 注:规则为 标签名【^属性名前缀】,标签名可写可不写,多个属性即多个【】。
 

36
22


 
 利用标签内
属性名+正则表达式
查找元素
 

<span class=\"ABC\" >36</span>
<span class=\"ADE\" >22</span>


 
 

Elements elements = doc.select("span[class~=^AB]");


 注:规则为 标签名【属性名~=正则表达式】,以上的正则表达式的意思是查找以class值以AB为开头的标签,标签名可写可不写,多个属性即多个【】
 

36


 
 利用标签
文本包含某些内容
来查找
 

<span>36</span>
<span>22</span>


 
 
 

Elements elements = doc.select("span:contains(3)");


 注:规则为 标签名:contains(文本值)
 

36


 
 利用标签
文本包含某些内容+正则表达式
来查找
 

<span>36</span>
<span>22</span>


 
 

Elements elements = doc.select("span:matchesOwn(^3)");


 注:规则为 标签名:matchesOwn(正则表达式),以上的正则表式的意思是以文本值以3为开头的标签
 

36


 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  网络爬虫 杭电oj