Python请求响应与数据解析
Python Http请求
说到Python里的Http网络请求,大家常用的库其实就那么几个:Urllib、Urllib3、Httplib2,还有名声在外的Requests。这里头,Urllib3算是个实力派,它功能全面、设计清晰,不仅支持线程安全,还自带连接池,连文件上传(post)都给安排好了。而Requests呢,直接打出了“为人类设计的Http”这个口号,用起来确实简洁直观,门槛低了不少。
在实际的网络请求操作里,Cookie的管理是个绕不开的关键环节。怎么处理呢?一种思路是把那些记录着重要请求状态的Cookie保存到本地文件,需要时再加载进来。另一种更“自动化”的方案,是创建一个Cookielib.CookieJar对象。这个方法前期设置起来可能稍微有点繁琐,但好处是一劳永逸——用它来给Urllib2构建一个Opener之后,后续所有Cookie的更新、过期清理这些杂事,就全部交给系统自动处理了,省心不少。

数据格式的解析方法
数据解析这块,常用的方法大致可以归为两类:一类是针对Html的解析法,另一类是处理纯文本的解析法。
先说Html解析。Xpath选择器、CSS选择器,还有“万金油”正则表达式,都是常见的工具。至于纯文本解析,正则表达式依然好用,Python自带的字符串处理函数,比如Index、Find、Split、Join这些,也能派上大用场。
那么,到底该用哪种?有个小建议:在解析Html时,尽量考虑用Xpath或者CSS选择器来替代正则表达式。为什么呢?诚然,在固定场景下,一段精心编写的正则表达式,解析效率可能比Xpath要高。但选择工具不能只看效率,更要看长期维护成本。Xpath的选择路径写出来,可读性比一堆抽象符号组成的正则表达式强太多了。这让代码的调试、后续的维护和修改都变得轻松许多,从项目整体效率来看,往往是更划算的选择。