/ Python

Python网页采集

Author:leo108

Blog:http://leo108.com

前两天心血来潮去看了看python,感觉不错。

今天就来写个helloworld,目标是把http://linux.chinaitlab.com/manual/Python_chinese/index.html上面的教程采集到本地。

首先搜索获取网页源代码的python代码:

import urllib def getSource(url): sock = urllib.urlopen(url) htmlSource = sock.read() sock.close()

接下来要做的是获取带要采集的网址列表。

所有网址都在目录表那块,所以先截取出目录表那块的代码:

sock = urllib.urlopen("http://linux.chinaitlab.com/manual/Python_chinese/index.html") htmlSource = sock.read() sock.close() begin=htmlSource.find("

") end=htmlSource[begin:].find("
") str1=htmlSource[begin:begin+end]

下面的思路很简单,就是提取出这块里面的所有网址。

一开始我用的是匹配的的方式来截取网址,结果发现有很多问题。

搜索了一番,发现Python提供的SGMLParser库有截取网址的功能:

from sgmllib import SGMLParser class URLLister(SGMLParser): def reset(self): SGMLParser.reset(self) self.urls=[] self.imgs=[] def start_a(self, attrs): href = [v for k, v in attrs if k=='href'] if href: self.urls.extend(href)

parser=URLLister() parser.feed(str1) parser.close()

parser.urls就是所有网址的数组

最后要做的是把获取到的代码保存成文件:

def savefile(htmlSource): f = file('/test/'+url, 'w') f.write(htmlSource) f.close()

效果图:

源代码:

本站下载: Python网页采集源代码

Python网页采集
Share this