python 爬取csdn网页并保存博客到本地

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

先贴张保存到本地的图:


源码如下:希望那里写的不好,多多指正。。一块学习。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;

	


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值