关于抓取简书内容

前几天用手机抓博客园和csdn的文章的时候,直接分析它们各自的APP得到了如下获取json的链接

csdn
http://ms.csdn.net/api/v2/search/blog?page=1&pagesize=20&key=Android
博客园
http://cnblogs.davismy.com/Handler.ashx?op=BlogSearch&key=Android

后面的参数就不用我多说了。
但是抓取简书内容的时候,却遇到了问题。分析简书APP的时候,每次只要用其他工具抓取(这里我用的是fiddler),简书APP就无法正常访问网络。所以只好放弃APP这条路,然后转向电脑端。在电脑端的简书官网进行搜索,在访问后台找到了这样一个链接:
http://www.jianshu.com/search/do?q=Android&page=1&type=notes
然后就是测试过程中的各种坑点。开始,天真的以为返回的内容就是我要的json格式,然后就直接使用volley中的JsonObjectRequest方法去请求上面的地址,然后,就看到了下面的提示
Unexpected response code 404 for http://www.jianshu.com/search/do?q=Android&page=1&type=notes
一个大大的404出现在了输出栏,看来返回的内容并不是json格式,然后自己就转用StringRequest方法去请求,还是和上面一样的结果。这个时候,应该倒杯茶好好想想了:这三个(或者说这两种)地址有什么区别呢?然后就是各种尝试,试了一会发现,csdn和博客园的地址都能直接在浏览器中访问,并且显示json数据,但是简书的却不行,每次直接访问都会跳转到一个404页面;只有在简书的页面进行搜索,浏览器自动会在后台访问这个链接,然后返回相应的数据。这块应该就是它们的区别所在,也是解决问题的关键。
既然找到了问题的关键,那就开始动手了,我先在浏览器中的简书页面进行了搜索,然后在浏览器调试模式中找到后台访问的链接,好像请求头里面有很多内容呀,然后为了让手机端能模拟浏览器的行为,重写getHeaders方法,然后加上了全部的参数,满心欢喜的以为能访问了,没想到又报错了,如下:
org.json.JSONException: Value ����������������� of type java.lang.String cannot be converted to JSONObject
这块我使用的是JsonObjectRequest方法进行请求的,看到这个错误,想着应该用StringRequest方法,然后说改就改,直接换成StringRequest方法进行测试,成功是成功了,但是输出栏里却是满满一屏幕的乱码,乱码看着太心烦了,就不贴了。
接下来就是漫漫长路之修改编码问题,网上找了好久各种方法:字符流转字节流,重写volley中的parseNetworkResponse方法等等,然而都没有解决。
突然想到,浏览器端能正常显示,但是手机不能正常显示,两者之间就差了一个请求头,有可能是请求头的问题。然后就又开始尝试。最后,编码问题源头终于找到了,问题就出在了请求头这块
"Accept-Encoding"="gzip, deflate"
这个参数表示本地可以接收压缩格式的数据,电脑端接收到压缩文件之后会自动进行解压,而自己写的程序中没有解压的方法,所以仍然会显示压缩的内容,所以看到的就是乱码了。
然后果断删掉这行参数,程序终于正常跑起来了,还有比如搜索的内容会被标签包裹之类的小问题,这边我是用replace函数直接进行替换的。现在的大概界面是这样的。

Paste_Image.png

翻页还没有做,下拉刷新之后只是重复请求这个页面,这个坑会在这周末填上,记下自己犯的一些小错误,自己多来看看,也就不会在犯了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,969评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,446评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,250评论 4 61
  • 本着凡事不决问度娘的原则,谈到人生信条,首先就百度一番。 Get到定义,说是做人的原则。头脑发热,偶一为之的行为不...
    冰小寒阅读 4,455评论 6 3
  • 《性格与人格类型》第一章 世界上有两种人,一种人认为世界上有两种人,而另一种人则不这样认为。 这是本章中提到的一个...
    寻昕询心阅读 229评论 4 3