- 在线时间
- 1029 小时
- 最后登录
- 2017-4-30
- 注册时间
- 2014-1-21
- 听众数
- 213
- 收听数
- 2
- 能力
- 100 分
- 体力
- 15803 点
- 威望
- 98 点
- 阅读权限
- 150
- 积分
- 8600
- 相册
- 0
- 日志
- 0
- 记录
- 3
- 帖子
- 1549
- 主题
- 715
- 精华
- 5
- 分享
- 0
- 好友
- 542
TA的每日心情 | 开心 2017-4-28 17:18 |
---|
签到天数: 415 天 [LV.9]以坛为家II
 群组: 乐考无忧考研公益讲座 群组: 2017美赛两天强训 群组: 模友会交流视频 群组: 群组: 国赛讨论 |
前言:, t1 C. p4 p0 B) M8 Y
越来越火了,网页是数据很大的一个来源。最近很多人问怎么抓网页数据,据我所知,常见的编程语言(C++,java,python)都可以实现抓网页数据,甚至很多统计\计算的语言(R,Matlab)都有可以实现和网站交互的包。本人试过用java,python,R抓网页,感觉语法各有差异,逻辑上是一样的。我准备用python来大概讲讲抓网页是什么概念,具体的内容要自己看手册或者google别人的博客,这里算是抛砖引玉了。水平有限,出现错误或者有更好的办法,欢迎讨论。
! e% |2 H- x W0 t" k1 W9 [4 r# @+ Z) e# ^1 c+ l1 M; z# O5 i) ~8 P# d
步骤一:熟悉Python的基本语法。
4 x" H* i1 j% Q0 }0 D8 f6 M/ I已经熟悉Python的直接跳到步骤二。: ^) G8 k6 f4 \: u) D
Python是门比较容易入门的编程语言,如何上手视编程基础而定。- G. n% j6 @- F) S
(1) 如果有一定编程的基础,建议看google's python class,链接https://developers.google.com/edu/python/?hl=zh-CN&csw=1
9 V) w! g. H% ^4 e6 p. }这个是一个为期两天的短期培训课程(当然,是两个全天),大概是七个视频,每个视频之后给编程作业,每个作业一个小时之内可以完成。这是我学习python的第二门课(第一门是codecademy的python,很早之前看的,很多内容都记不得了),当时每天看视频+编程作业一个多小时,六天弄完,效果还不错,用python写基本的程序没有问题。1 ^' C5 u* |: [2 B& K) 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,这些资源也是挺不错的,但是编程量太少,初学者还是系统的跟课、多练练手来打好基础吧。- O9 r: j. l( ^. ^( `! O& f' _
当然,每个人的偏好不同,我推荐的不一定适合你。可以先看看这个帖子【长期加分贴】介绍你上过的公开课里面其他人是怎么说的,或者上coursetalk.org看看课程评论,再决定吧。
/ }. `5 d! f3 X5 P& c& q步骤二:学会如何与网站建立链接,得到网页数据。
3 \5 c; w3 y" V$ z5 _; W: V1 x% k5 y写脚本与网站进行交互,要熟悉python和网页相关的几个module(urllib,urllib2,httplib)中的一个,知道一个即可,其他的都类似的。这三个是python提供的和网页交互的基本module,还有其他的一些,比如:mechanize和scrappy,我没有用过,可能有更好的性能,欢迎了解的来补充。基本的网页抓取,前面的三个module足矣。. Q! T5 A9 t4 ?. ]$ n _- _
下面的代码演示如何用urllib2与google scholar进行交互,获得网页信息2 o8 P4 P5 V9 Y/ C/ X" I
- # 导入模块 urllib2
- import urllib2
- # 随便查询一篇文章,比如On random graph。对每一个查询google . From 1point 3acres bbs
- # scholar都有一个url,这个url形成的规则是要自己分析的。
- query = 'On+random+graph'
- url = 'http://scholar.google.com/scholar?hl=en&q=' + query + '&btnG=&as_sdt=1%2C5&as_sdtp='
- # 设置头文件。抓取有些的网页不需要专门设置头文件,但是这里如果不设置的话,
- # google会认为是机器人不允许访问。另外访问有些网站还有设置Cookie,这个会相对复杂一些,
- # 这里暂时不提。关于怎么知道头文件该怎么写,一些插件可以看到你用的浏览器和网站交互的. From 1point 3acres bbs
- # 头文件(这种工具很多浏览器是自带的),我用的是firefox的firebug插件。
- header = {'Host': 'scholar.google.com',
- 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:26.0) Gecko/20100101 Firefox/26.0',. 1point 3acres 璁哄潧
- 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
- 'Accept-Encoding': 'gzip, deflate',
- 'Connection': 'keep-alive'}. 鐗涗汉浜戦泦,涓
|
zan
|