这个小东西来源于某一天我浏览豆瓣的一个养生帖子,然后突发奇想,想把所有养生的东西下载下来。于是想到了用python写个小爬虫
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
import re
import urllib
def getHtml(url):
page = urllib.urlopen(url)
html = page.read()
return html
def getContent(html,pattern,filePath="1.txt"):
contentre = re.compile(pattern)
contentList = re.findall(contentre,html)
for i in contentList:
i = i.replace("<br/>", "\n")
i = i + "\n\n***********************************************************\n\n"
writeFile(i,filePath)
def writeFile(content, filePath):
output = open(filePath, "a+")
output.writelines(content)
output.close()
def getNext(html,pattern):
nre = re.compile(pattern)
nt = re.findall(nre,html)
return nt
url = "http://www.douban.com//group//topic//5480779//?author=1#sep"
pattern = r'<p class="">(.*?)</p>'
nextPage = r'<link rel="next" href="(.*?)"/>'
while True:
html = getHtml(url)
getContent(html, pattern,"forHealth.txt")
has = getNext(html,nextPage)
if 0 == len(has):
print "Finish!"
break
url = has[0]
|
后面的话:其实这个东西可以扩展应用下,用来下载想要的图片呀,小说呀,视频神马的,只要查看网页源代码,找到所在内容的前后格式,用正则表达式抠出来就可以了。我比较懒,经常在没网络的地方玩,因此想下载点东西可以离线看看,所以这个小东西对我还是挺有用的……