python 如何获取网页源代码并保存本地_python 爬取csdn网页并保存博客到本地

这几天一直在学用python爬网页 , 现在是用urllib2,cookie等模块获取了csdn的博客源码,然后打算把所有博客都保存到本地;这就涉及到了解析html, 由于对正则的理解不太深。。。就用了第三方工具模块:美丽的汤---BeautifulSoup  ,可以自己百度安装,使用教程,很容易上手: 代码不健壮。。主要是容易出现乱码。。 有时候遇到全角的时候也会出bug,以后再完善吧。

先贴张保存到本地的图:

0818b9ca8b590ca3270a3433284dd417.png

源码如下:希望那里写的不好,多多指正。。一块学习。PS:后来才知道,这可以刷访问量(非本意。。。)

# -*- coding: utf-8 -*-

import urllib,urllib2,cookielib,re,socket

import os,sys,time

from bs4 import BeautifulSoup

#防止编码乱码#

reload(sys)

sys.setdefaultencoding('utf-8')

####

url='http://blog.csdn.net/shomy_liu'# csdn的账号

headers={

'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0'

}

#读取htmml

def login(url=url):

#socket.setdefaulttim #单位为秒

time.sleep(0.5)# 防止封IP

req= urllib2.Request(url=url,headers=headers)

return urllib2.urlopen(req).read()

state=True

html=login()

while state:

soup=BeautifulSoup(html)

articals=soup.findAll('div',{'class' : 'list_item article_item'})

for artical in articals:

title=artical.find('a')

artical_url='http://blog.csdn.net/'+title['href']

s=title.text.replace('\r\n',' ')#去掉回车符

print s

s=s.lstrip()#去掉首空格

s=s.rstrip()#去掉尾空格

f=file("D:\\study\\python\\py\\csdn_blog\\shomy_liu\\"+s+'.htm', 'w')#保存的目录

f.write(login(artical_url))

f.close()

#print artical_url

##换页转换

pagelist= soup.find(name='div',id='papelist')

next=pagelist.findAll('a')

state=False

for i in next :

if i.text.encode('utf-8')==str('下一页') :

url='http://blog.csdn.net/'+i['href']

html=login(url)

state=True

break;

你可能感兴趣的:(python,如何获取网页源代码并保存本地)