数学建模社区-数学中国

标题: 教你用python抓网页数据 [打印本页]

作者: 数学中国YY主管    时间: 2015-12-2 15:33
标题: 教你用python抓网页数据
前言:0 A8 N* C" ?, a* R7 F1 Y
越来越火了,网页是数据很大的一个来源。最近很多人问怎么抓网页数据,据我所知,常见的编程语言(C++,java,python)都可以实现抓网页数据,甚至很多统计\计算的语言(R,Matlab)都有可以实现和网站交互的包。本人试过用java,python,R抓网页,感觉语法各有差异,逻辑上是一样的。我准备用python来大概讲讲抓网页是什么概念,具体的内容要自己看手册或者google别人的博客,这里算是抛砖引玉了。水平有限,出现错误或者有更好的办法,欢迎讨论。
' i8 u9 I6 }0 d: `; W7 L- k+ ]' u7 X, ]6 g( X7 d
步骤一:熟悉Python的基本语法。) M3 V0 y6 `% [) E1 X) T4 v2 E! N' P! t
已经熟悉Python的直接跳到步骤二。
7 _- s, w% z9 Y! K' GPython是门比较容易入门的编程语言,如何上手视编程基础而定。2 k. W4 y& z; I
(1) 如果有一定编程的基础,建议看google's python class,链接https://developers.google.com/edu/python/?hl=zh-CN&csw=1
9 |& i' X/ ~; r  ~7 l7 Z这个是一个为期两天的短期培训课程(当然,是两个全天),大概是七个视频,每个视频之后给编程作业,每个作业一个小时之内可以完成。这是我学习python的第二门课(第一门是codecademy的python,很早之前看的,很多内容都记不得了),当时每天看视频+编程作业一个多小时,六天弄完,效果还不错,用python写基本的程序没有问题。
/ e7 h' ]9 G% s2 j* ~8 b5 P(2) 如果是没有任何编程基础,建议看coursera上Rice University开的An Introduction to Interactive Programming in Python。这门课我没有跟过,但是看coursetalk的评论反映非常好,地里也有同学评论(点这里),课程链接:https://www.coursera.org/course/interactivepython。Udacity上的CS101也是不错的选择,地里有相关的讨论帖(点这里),而且这门课就叫做build a search engine,会专门讲一些和网络相关的module。其他学习资源还有code school和codecademy,这些资源也是挺不错的,但是编程量太少,初学者还是系统的跟课、多练练手来打好基础吧。
: E- |# `, Q& ^当然,每个人的偏好不同,我推荐的不一定适合你。可以先看看这个帖子【长期加分贴】介绍你上过的公开课里面其他人是怎么说的,或者上coursetalk.org看看课程评论,再决定吧。6 @. r2 C! S  s- `+ C
步骤二:学会如何与网站建立链接,得到网页数据。! Z0 {* _4 h# L4 K
写脚本与网站进行交互,要熟悉python和网页相关的几个module(urllib,urllib2,httplib)中的一个,知道一个即可,其他的都类似的。这三个是python提供的和网页交互的基本module,还有其他的一些,比如:mechanize和scrappy,我没有用过,可能有更好的性能,欢迎了解的来补充。基本的网页抓取,前面的三个module足矣。9 f, ]" ]* W- o7 ~. d1 ?, y
下面的代码演示如何用urllib2与google scholar进行交互,获得网页信息* {7 b, n' t" Y% J) d' m