-
# -*- coding: cp936 -*-
-
import re
import urllib2
for page in range(1,input('how many page do you want down:')): ###这儿就是输入你希望下载的页数,输入你的总页数吧
url='http://blog.itpub.net/29096438/abstract/%d/'% page ####循环不同的页
text = urllib2.urlopen(url).read()
pattern = r'.*'
regex = re.compile(pattern)
urlList = re.findall(regex,text) ####通过正则表达式找到所有文章的href,此时的href是带上标题的
for i in urlList:
newi=re.sub('/29096438','http://blog.itpub.net/29096438',i).decode('utf-8') ###补全文章的href,,因为我们获取到的href是不全
的,少了http://blog.itpub.net这一段,decode编码是为了解决乱码问题
#print newi
fname=re.match('(.*)',newi)
fname2=fname.group(1)+'.html' ####获取文章的标题名
#print fname2
start = newi.find(r'href=')
start += 6
end = newi.find('viewspace')
end += 17
url2 = newi[start : end]
print url2 ####去掉上面href中的标题 只获取href的网址部分
try:
text2 = urllib2.urlopen(url2).read()
f = open(fname2,'w')
f.write(text2)
f.close()
except Exception,e:
print e
pass
-
代码有转义,注意被转换部分
-

改进,用beautiful模块取出正文部分
try:
r=requests.get(url2)
soup=bsp(r.content)
cont=soup.find('div',{'class':'Blog_wz1'})
f=open(fname2,'w')
f.write(str(cont))
f.close()
except:
pass