python利用beautifulsoup+selenium自动翻页抓取网页内容

一、背景 记录一次周末在家速成的爬虫实现之旅。受人之托,想要把这个页面http://baike.baidu.com/starrank?fr=lemmaxianhua的明星排行榜爬取下来。用chrome打开一看,其实就1000条记录。然后“右键菜单”->“检查”,看下网页的结构,也不是特别复杂。所以我目测只要用python自带的urllib2库打开网页,获取html代码,再交给BeautifulSoup库解析html代码,应该就可以快速搞定。 但仔细一看,点击下一页,网页的url没有任何变化,只是用js去加载了新的数据,然后动态地改变了table里面的数据。这可和本菜菜以前爬的页面可不一样,所以这次要想办法模拟翻页,然后重新读取新的html代码,再去解析。 实现翻页可以有两种办法,第一种是分析js的实现来模拟翻页。翻页操作实际上js向后台发出了请求,这里肯定是带着跳转的目的页码请求了后台,然后拿到新数据后重新渲染了html的表格部分。这种方法会更加高效,但难度也会更大一些。因为如果你已经能够模拟请求了,那其实相当于你连人家的服务器接口都已经知道了,那么进一步分析下响应就可以拿到结果了,这甚至不需要再去分析html代码了是不是?第二种比较简单暴力,也是我这里用的方法,那就是模拟点击网页中的下一页按钮,然后重新读取html代码来解析。 二、思路 在前面已经说了,这里把思路流程化: 1.打开网页 2.读取当前页面的html代码,解析列表里面的明星名字 3.模拟点击“下一页” 4.重复第2步的工作,直到页面里没有“下一页”的按钮...

利用属性动画在Android4.x上实现Android L的元素转场动画效果(shared elements transition)

一、背景 随着谷歌推出的MaterialDesign不断被各种实践,最近我也碰到这么一个需求,就是要求实现一个图片的转场效果。在第一个界面上,图片被点击后,会渐渐地滑动到第二个界面中去。 其实仔细观察一下Google相册也有用到这种效果,大概的效果图是这样的: 按照我的理解,这种效果要是直接把View拿出来复用就可以。但是经过学习(国内外各种大神的博客)和实践发现,里面有不少可以思考的地方。 根据官方介绍的Transitions,在Android 5.0以后,可以使用shared elements transition来实现这个效果,非常方便。但是我们的App一般还需要向下兼容到4.x,所以在4.x上得想其它的办法实现。 下面我以上图的ImageView转场动画为例子,介绍一下是怎么实现这个效果的。(代码都在这里) 注意:为了说明转场效果实现的核心内容,一些无关的东西都用了最简单的实现。...

Android View的可见性检查方法(上)

一、背景 在Android开发中有时候会遇到需要检查一个View是不是对用户可见,比如在消息流中,根据ImageView是否在屏幕中出现了再决定加载它,或者当视频滑入屏幕被用户可见时才播放、滑出屏幕就自动停止播放等等。乍一看好像都是在ListView、RecyclerView、ScrollView这些组件里面比较需要做这件事,今天总结一下我在实际开发中是怎么处理View可见性检查的。 二、检查View是否可见的基本方法(从外部检查View) 1 View.getVisibility() 很显然,我们可以用View.getVisibility()来检查一个它是否处于View.VISIBLE状态。这是最基本的检查,如果连这个方法得到的返回值都是View.INVISIBLE或者View.GONE的话,那么它对用户肯定是不可见的。 2. View.isShown() 这个方法相当于对View的所有祖先调用getVisibility方法。看下它的实现: /**...

App动态配置探讨

一、背景 App开发中一个比较常见的问题就是动态化,有时我们会需要程序的某一个逻辑可以动态改变而不需要发版本让用户重新安装。例如,App中的某个WebView有一个url白名单,我们希望它可以动态改变。这是个常见的需求,现在无论是技术面上还是产品上大家都在讲一个动态化,所以一波接一波出了各种插件化,甚至是ReactNative、weex、微信小程序等等这些轮子。 但是在实际中需要考虑到很多的业务特点,使得我们在统一化和个性化的时候比较难以选择,半年前天猫的技术博客就出了这篇文章–动态调整的基础 —— 配置中心,里面介绍了阿里的团队在这方面的实践经验。今天我以一个遇到的实际需求为例,总结下我的想法。 二、需求&目标:设计一个动态配置中心 需求:支持不同业务、不同平台、不同版本(一般是版本的范围),按需动态下发配置。这里业务可以是不同的App、也可以是同一个App里面不同的模块,或者不同的SDK。 目标:业务方(App开发者)可以自助到配置中心添加新的配置项或者修改以前的配置,按需下发到客户端。 数据模型 这里参考天猫动态配置的设计,我的动态配置中心也有下面两个的数据模型:...

Android反编译技术总结

一、Apk反编译工具及其使用方法 1.原理 学习反编译之前,建议先学习一下Apk打包的过程,明白打包完成后的Apk里面都有什么文件,各种文件都是怎么生成的。 这里有两篇AndroidWeekly中推荐过的好文章: 浅析 Android 打包流程 Android构建过程分析 Apk技术也有非常多的技术可以学习,主要都是围绕着如何减小体积,如何提高打包速度展开,这里先不多说了。下面是一张基本的Apk文件结构图。 Apk文件本质上其实是一个zip包。直接拿解压工具解压就可以看到其中包含了什么。下面简单介绍一下Apk文件的结构。...