Http实验:爬虫

爬取网络的信息有多种方式,比如利用HttpClient库或Jsoup库,不过Jsoup库更适合用来解析爬取到的数据。

获取这些库需要用到Maven工具的辅助,在创建项目的时候就选择使用Maven创建。

Apache Maven(通常简称为Maven)是一个用于项目管理和构建的强大工具。它提供了一个一致的方式来管理项目的构建、报告和文档,并能够自动化构建过程。

创建好项目后,需要在https://mvnrepository.com/网站获得库的链接,然后复制到pom.xml文件的dependency标签之间。

mvnrepository.com:

pom.xml:

用HttpClinet的方法获取Document实例:

//1、创建HttpClient对象,相当于打开浏览器

CloseableHttpClient httpClient = HttpClients.createDefault();

//2、创建网址对象,相当于输入网址

HttpGet httpGet = new HttpGet("https://jsj.gzhu.edu.cn/info/1208/2168.htm");

//3、使用HttpClient对象发起请求,相当于回车访问网址,用CloseableHttpResponse对象接收响应

CloseableHttpResponse response = httpClient.execute(httpGet);

//4、解析请求的相应,获取数据

if (response.getStatusLine().getStatusCode() == 200) {

    HttpEntity httpEntity = response.getEntity();

    String content = EntityUtils.toString(httpEntity,"utf8");

    //获取Document对象

    Document doc = Jsoup.parse(content);

用Jsoup的方法获取Document实例:

String htmlString = "https://search.jd.com/Search?keyword=网络编程";

Document doc = Jsoup.connect(htmlString).get();

可以看到用Jsoup的方法简单很多,但是从效果上来说应该是前者更好。

要注意的是HttpGet类型的构造参数是uri类型而非String类型。

 

访问子链接:

//跳转到子链接去获取信息

for (Element link : links) {

    //取得教师名字对应的子链接

    String linkUrl = link.attr("href");

    //将子链接转换成绝对链接

    URL absolute = new URL(new URL(url), linkUrl);

    //访问子网页

    doc = Jsoup.connect(String.valueOf(absolute)).get();

从当前获取的元素当中提取出子链接,然后用URL的构成函数就能把二者拼接起来了。

 

对元素的筛选和提取:

DocumentElementsElement能使用selectgetElement(s)By*attr方法等方法去缩小选取的范围。

select方法通过CSS选择器选择元素。

  • 元素选择器:
    • 选择所有匹配的元素。
    • 示例:p选择所有<p>元素。
  • ID选择器:
    • 通过元素的id属性选择特定的元素。
    • 示例:#myElement选择id为myElement的元素。
  • 类选择器:
    • 通过元素的class属性选择特定的元素。
    • 示例:.myClass选择class为myClass的元素。
  • 属性选择器:
    • 通过元素的属性选择元素。
    • 示例:input[type="text"]选择所有<input>元素中type属性为text的元素。
  • 后代选择器:
    • 选择元素的后代元素。
    • 示例:div p选择所有<div>元素内的所有<p>元素。
  • 子元素选择器:
    • 选择元素的直接子元素。
    • 示例:ul > li选择所有<ul>元素下的直接子元素<li>。
  • 相邻兄弟选择器:
    • 选择紧接在同一父元素下的元素。
    • 示例:h2 + p选择紧接在<h2>元素后的<p>元素。
  • 伪类选择器:
    • 选择元素的特定状态或位置。
    • 示例:a:hover选择鼠标悬停在<a>元素上的状态。
  • 通用选择器:
    • 选择所有元素。
    • 示例:*选择文档中的所有元素。
  • 所有选择器可以叠加使用:
    • 示例:p.myClass.#myElement选择p元素下、myClass类的、id为myElement的元素

部分get*By*方法能够获取多个元素,通过firstlastget方法分别能够获取头、尾以及特定index的元素。

attr方法能够读取元素的属性值,获取其显示在网页上的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值