本文使用python抓取新浪博客全部文章的源码基于网上旧版教程,因网上同类文章重复过多,很多站点的python爬取教程都是一模一样,该教程的原始出处已无法考证。现在网上流传的教程基本已经无法在python3.7版本下运行了,需要进行不少修改,这次的代码写的比较仓促,有很多累赘代码没有时间删除优化。另外在使用这个python爬取的过程中发现对表格的支持不友好,另外不支持爬取图片。爬取图片的教程网上有很多,也可以参考我之前的文章:python3.7保存防盗链图片referer
本代码基本保留了网上流传老版本的所有代码,并已针对python3.7环境做出相应的修改(同时也保留了老版本大代码,但是注释掉了否则无法运行)
import urllib
#import urllib2
import urllib.request
import re
#from urllib import urlopen
from urllib.request import urlopen
class Tool:
#去除img标签,7位长空格
removeImg = re.compile('| {7}|')
#删除超链接标签
removeAddr = re.compile('|')
#把换行的标签换为\n
replaceLine = re.compile('
#将表格制表
替换为\treplaceTD= re.compile('
')#把段落开头换为\n加空两格
replacePara = re.compile('
')#将换行符或双换行符替换为\n
replaceBR = re.compile('
|
')
#将其余标签剔除
removeExtraTag = re.compile('<.*?>')
def replace(self,x):
x = re.sub(self.removeImg,"",x)
x = re.sub(self.removeAddr,"",x)
x = re.sub(self.replaceLine,"\n",x)
x = re.sub(self.replaceTD,"\t",x)
x = re.sub(self.replacePara,"\n ",x)
x = re.sub(self.replaceBR,"\n",x)
x = re.sub(self.removeExtraTag,"",x)
#strip()将前后多余内容删除
return x.strip()
class XLBK:
def __init__(self,baseUrl,articleTag,fileName):
self.baseURL=baseUrl
self.tool=Tool()
self.file=None
self.article=1
self.defaultTitle=u'新浪博客'
self.articleTag=articleTag
self.fi