简历爬取系列(一)——数据的选取

要想获得不同社交网络上的用户数据,现行的普遍方法就是网络爬虫(或直接下载)。抛开直接下载这一简单粗暴的方式来讲,爬取网络上的海量数据不失为一种不错的方式。然而,对爬取数据的正确选取对成功分析数据起到至关重要的作用。主要原因如下:

  1. 选取有意义的数据。若爬取的数据包含信息量小,或者爬取的不同社交网络上的数据没有重合属性,那么这些数据的意义并不大。目前通过推理得到的匹配结果一个是慢,另一个也不能保证准确率。
  2. 选取好获取的数据。如果数据难以获取或者网页上反爬虫机制高端,那么爬取数据的速度和难度可想而知。无法在短时间获取大量数据,就无法体现大数据的魅力与功效,因而不值得推崇。
  3. 选取自己了解的数据。如果一个人不熟悉他要爬取的数据,就要额外花时间进行数据的阅读与理解。以及筛选有用数据。

 

可能的数据:

  1. CSDN:开始打算爬取这方面的数据,因为对其很熟悉。然而,其不能直接看到博主的所有粉丝(只能看到6个),也没有博客专家的排名,不便获取用户的链接。此外,很多用户在信息填写方面留有很多空白,大多数都没填写个人信息。因此,放弃之。
  2. 领英:注册了领英账号,发现其要求填写真实姓名、联系电话等较为真实的信息。然而,领英具有较好的反爬虫机制(网上这样说),而且领英上有很多外国人,不符合实验对中国用户进行研究的设定。但是领英也有好处,那就是其信息基本都是真实的,对于人的姓名、工作经历、教育经历等都是有质量保证的。
  3. 简书:和CSDN类似的数据,有与CSDN相同的问题:大多数人都没填写个人信息。但是,简书可以显示更多的粉丝(网传900个),也有热点话题,因此可以爬取一定数量的信息。但属性信息和真实度相对来说不能保质保量。
  4. 人人网:好处就是应该比较好爬,有现成的代码。里面的信息也较为真实。缺点就是信息过于陈旧,可能是多年前风靡一时的时候填写的资料。
  5. 58同城:像是中国版的领英。有很多求职信息,姓名、工作经历、教育经历等相对真实。可以作为爬取的一个信息来源。

 

经过上述分析,考虑先尝试爬取58同城上的相关信息。人人网也可以考虑作为爬取的内容之一(毕竟之前风靡校园,像我一样的同学人人都有账号)。简书中包含的属性信息还是太少,且真实性没法保证,付出与回报不成正比,暂不考虑。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在上一篇文章中,我们介绍了如何通过Java代码模拟浏览器行为来爬取携程网站上的酒店列表数据。本篇文章将继续介绍如何通过Java代码获取酒店详情页面的数据。 1. 获取酒店详情页面URL 在上一篇文章中,我们已经可以获取到酒店列表页面的数据。接下来,我们需要从列表页面中获取每个酒店的详情页面URL。我们可以通过以下代码来获取URL: ```java // 获取酒店详情页面URL Elements hotelLinks = doc.select(".hotel_item a[href^=//hotels.ctrip.com/hotel/]"); for (Element link : hotelLinks) { String href = link.attr("href"); hotelUrls.add("http:" + href); } ``` 这里我们使用了Jsoup框架提供的选择器功能,选取class为“hotel_item”的元素,然后再选取其中的a标签,并且href属性值以“//hotels.ctrip.com/hotel/”开头的元素。然后再遍历这些元素,获取其中的href属性值并加上“http:”前缀,即是酒店详情页面的URL。 2. 解析酒店详情页面数据 获取到酒店详情页面的URL后,我们需要再次模拟浏览器行为,访问该URL并获取页面数据。我们可以通过以下代码来实现: ```java // 获取酒店详情页面数据 for (String url : hotelUrls) { Document hotelDoc = Jsoup.connect(url).userAgent(USER_AGENT).get(); String hotelName = hotelDoc.select(".hotel_intro dt").text(); String address = hotelDoc.select(".hotel_address a").text(); String score = hotelDoc.select(".hotel_score .score_num").text(); String commentNum = hotelDoc.select(".hotel_judgement .hotel_judgement_judgement").text(); String price = hotelDoc.select(".hotel_intro .hotel_price span").text(); hotels.add(new Hotel(hotelName, address, score, commentNum, price)); } ``` 这里我们同样使用了Jsoup框架来获取页面数据。首先,我们遍历所有酒店详情页面的URL,然后通过Jsoup.connect()方法连接到该URL并获取页面数据。接着,我们使用选择器选取需要的元素,例如酒店名称、地址、评分、评论数和价格等,并将其保存到一个自定义的Hotel对象中。最后,我们将所有的Hotel对象添加到一个列表中,以便后续的数据处理。 3. 数据保存 获取到所有酒店的数据后,我们可以将其保存到本地文件中,也可以将其保存到数据库中。这里我们使用了JDBC连接MySQL数据库,并将数据保存到一个名为“hotels”的表中。以下是保存数据的代码: ```java // 保存酒店数据数据库 Connection conn = null; PreparedStatement stmt = null; try { Class.forName(JDBC_DRIVER); conn = DriverManager.getConnection(DB_URL, USER, PASS); String sql = "INSERT INTO hotels (name, address, score, comment_num, price) VALUES (?, ?, ?, ?, ?)"; stmt = conn.prepareStatement(sql); for (Hotel hotel : hotels) { stmt.setString(1, hotel.getName()); stmt.setString(2, hotel.getAddress()); stmt.setString(3, hotel.getScore()); stmt.setString(4, hotel.getCommentNum()); stmt.setString(5, hotel.getPrice()); stmt.executeUpdate(); } } catch (SQLException se) { se.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (stmt != null) stmt.close(); } catch (SQLException se2) { } try { if (conn != null) conn.close(); } catch (SQLException se) { se.printStackTrace(); } } ``` 这里我们使用了JDBC框架来连接数据库,并执行SQL语句将酒店数据保存到数据库中。最后,我们需要在finally块中关闭数据库连接和语句对象,以释放资源。 总结 本篇文章介绍了如何通过Java代码获取携程网站上的酒店详情页面数据,并将其保存到MySQL数据库中。这个过程涉及到了许多技术,例如模拟浏览器行为、页面数据解析、数据库连接等。通过这个案例,我们可以更好地理解Java爬虫的实现原理和技术要点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值