python抓取网页内容


最近想在网上抓取数据做研究,刚好会一点python,就让我们来看一种比较简单的实现方法。

比如我要抓取奥巴马每周的演讲内容http://www.putclub.com/html/radio/VOA/presidentspeech/index.html,如果手动提取,就需要一个个点进去,再复制保存,非常麻烦。

那有没有一步到位的方法呢,用python这种强大的语言就能快速实现。

首先我们看看这网页的源码

\

\

可以发现,我们要的信息就在这样\一小条url中。<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+uPy+38zltePLtaOsvs3Kx87Sw8fSqrHpwPrDv7j2wOAmIzIwMjg0O2h0dHA6Ly93d3cucHV0Y2x1Yi5jb20vaHRtbC9yYWRpby9WT0EvcHJlc2lkZW50c3BlZWNoLzIwMTQvMDkyOC85MTMyNi5odG1s1eLR+bXEzfjWt6OstvjV4s341rfQ6NKqtNPJz8PmtcTN+NKz1tDM4cihoaM8L3A+CjxwPjxicj4KPC9wPgo8cD66w6Osv6rKvNC0tPrC6zwvcD4KPHA+ytfPyLTyv6rV4rj2xL/CvNKzo6yxo7Tm1Npjb250ZW50PC9wPgo8cD48cHJlIGNsYXNzPQ=="brush:java;">import sys,urllib url="http://www.putclub.com/html/radio/VOA/presidentspeech/index.html" wp = urllib.urlopen(url) print "start download..." content = wp.read()下面要提取出每一篇演讲的内容

具体思路是搜索“center_box”之后,每个“href=”和“target”之间的内容。为什么是这两个之间,请看网页源码。

得到的就是每一篇的url,再在前面加上www.putclub.com就是每一篇文章的网址啦

print content.count("center_box")
index =  content.find("center_box")
content=content[content.find("center_box")+1:]
content=content[content.find("href=")+7:content.find("target")-2]
filename = content
url ="http://www.putclub.com/"+content
print content
print url
wp = urllib.urlopen(url)
print "start download..."
content = wp.read()
有了文章内容的url后,同样的方法筛选内容。

#print content
print content.count("
"):] content = content[:content.find("
最后再保存并打印

filename = filename.replace('/',"-",filename.count("/"))
fp = open(filename,"w+")
fp.write(content)
fp.close()
print content

OK,大功告成!保存成.pyw文件,以后只需双击就直接保存下了obama每周演讲内容~



评论关闭