java爬虫面试题_java爬虫进阶篇(半小时知乎两万推荐问题)

上一篇写了一个简单的新浪新闻爬虫作为上手主要是用jsoup包来对url页面进行抓取到本地,并在本地进行数据的解析提取。这里就不重复叙述jsoup的用法了,百度一下基本一大片。看了网上大神们都有对知乎进行爬取,今天我也拿它来试试手。写这篇文章的目的主要是想将自己在爬取中遇到的一些坑,以及怎么解决的做一下记录。也算是一次加深理解的过程。

爬取的目标页面

2017-12-31_172919.png

目标是爬取问题推荐页面的所有问题。但是随后我就发现一个问题,第一次我是通过抓取这个https://www.zhihu.com/explore/recommendations链接来获取问题列表,但是当代码敲完测试的时候发现数据只有20条。。。这显然不是我所期望的,看了一遍代码 发现代码是没有毛病,那么问题出在哪里?排查了一片以及debug模式。最终发现是页面的问题。因为我忽略了一个重要的地方。页面是动态加载的,而且每次只加载20条。

页面加载.png

问题就出在这个地方,这里其实还包含了一个地址(https://www.zhihu.com/node/ExploreRecommendListV2)。通过抓包可以发现(google的F12真的好用,推荐多去看看)

ajax请求头.png

请求参数.png

返回json结果.png

知道问题出在哪里其实就已经完成了一半了。说一下接下来我的思路:

因为用请求的参数可以看出其实这就是一个类似于一个分页信息一样。那么我只要在java代码中每次模仿页面的请求给知乎发送ajax请求,然后解析返回的json结果是不是就可以获取其中的问题信息了。

上面其实就已经有两个需求需要解决。

在java代码中模仿ajax发送请求。采用的是Httpclient。

解析返回的json,Gson jar包可以完美解决。

封装了httpclient post请求

public class HttpClientUtil {

/**

*

* @Title: doPost

* @Description: 模仿提交post请求

* @param @param url

*

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值