3 L5 ` @( i) Q* R: B8 Q8 l复制代码: ?8 M/ m' [1 V. ~: r% L
以上的代码就把在google scholar上查询On Random Graph的结果返回到doc这个变量中了,这个和你打开google scholar搜索On Random Graph,然后将网页右键保存的效果是一样的。5 n& W, @; c2 O( |- b; ?2 P
0 X2 J$ i$ J0 }9 g2 | Q步骤三、解析网页0 p/ w. ^4 B; m$ G& c5 Y9 [
上面的步骤得到了网页的信息,但是包括了html标签,你要把这些标签去掉,然后从html文本中整理出有用的信息,6 q/ R4 K" j+ k, F" V# a X
你需要解析这个网页。! q+ E, p' g& X, Q* P( K u
解析网页的方法:- J M n& B- G$ v
(1) 正则表达式。正则表达式很有用,熟悉它节省很多的时间,有时候清洗数据不用写脚本或者在数据库上查询,直接在notepad++上用正则表达式组合使用就行了。如何学习正则表达式建议看:正则表达式30分钟入门教程,链接:http://deerchao.net/tutorials/regex/regex.htm 4 a2 Z& x, {) G% t8 W(2) BeautifulSoup模块。BeautifulSoup是一个很强大的模块,能把html文件解析成一个对象,这个对象是一棵树。我们都知道html文件是树状的,比如 body -> table -> tbody -> tr,对于tbody这个节点,有很多个tr的子节点。BeautifulSoup可以很方便的取到特定的节点,对单个节点也可以取它的sibling node。网上有很多相关的说明,这里不细说,只演示简单的代码:" |- p) q/ f* a0 V9 S. w
(3) 上面两种方法结合使用。 4 U& o, h L. O
. K# K2 l u7 X复制代码 0 d, @; d$ \3 s * a% e& {1 _; c3 ]1 c' J3 J这些都是我在一个分析citation network的项目的代码。顺便一提,我从google scholar上抓取paper的信息以及引用列表的信息,访问了大概1900次左右的时候给google block了,导致这个片区的ip一时无法登陆google scholar。! W& X0 Z. J+ ]" k+ c
; ~. Q9 C' i$ r' h' m- x( W 步骤四:存取数据; a+ @% f. y+ X" ^. @
好不容易抓了数据,现在只是存储在内存中,必须保存起来才能利用。 , m, [5 e, a. a' h) b(1) 最简单的方法之把数据写进txt文件中,Python中可以用如下代码实现: ' j' A" @ g8 b u: K - k" x% h! O$ C8 M. _$ f