`
mushme
  • 浏览: 790082 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

使用python备份搜狐博客

 
阅读更多
博客日落西山,已经是不争的事实了,只怕哪天会停掉的。
用python把旧的内容做下备份。
# -*- coding:utf-8 -*-

import urllib.request
from urllib import request
from bs4 import BeautifulSoup
import sqlite3

domain="TTTT";####此处修改为你的博客域名
url = "http://"+domain+".blog.sohu.com/entry/"
urlFile = urllib.request.urlopen(url)
data = urlFile.read()
urlFile.close()
data = data.decode('utf-8',errors='ignore')
print("get page success")
pre = "var _ebi = \'"
index1 = data.find(pre) + len(pre)
index2 = data.find('\'', index1)

ebi=data[index1 : index2];
print("ebi:"+ebi)

pre = "var totalCount = "
index1 = data.find(pre) + len(pre)
index2 = data.find(';', index1)
print("totalcount:"+data[index1 : index2])
totalPage="";
if (int(data[index1 : index2]))%20>0:
    totalPage=str(int(int(data[index1 : index2])/20+1)) 
else:
    totalPage=str(int(int(data[index1 : index2])/20))
print("totalpage:"+totalPage);

    
def getBlogList(pageId):
    url="http://"+domain+".blog.sohu.com/action/v_frag-ebi_"+ebi+"-pg_"+pageId+"/entry/";
    
    print("get url:"+url);
    #1.获取页面内容html
    with request.urlopen(url) as f:
        html_doc=f.read()
        html_doc = html_doc.decode('utf-8',errors='ignore')
        
    #2.分析页面内容,获取标题内容和链接[格式如下]
    #<h2 class="news_entry">
    #	<a href="/n/535728/" target="_blank">传Windows 10 Mobile Build 11088下月初发布</a>
    #</h2>
    soup = BeautifulSoup(html_doc,"html.parser")
    news_array=soup.find_all('div', {'class': 'newBlog-list-title'})
    for news in news_array:
        if news.a:
            print(news.a.get("href"))#获取链接
            save(news.a.get("href"))
        #print(news.a.string)#获取标题

def save(link,title=None):
    if title is None:
	    title=""
    conn = sqlite3.connect('blog.db')
    cursor = conn.cursor()
    # 执行一条SQL语句,创建user表:
    cursor.execute('create table IF NOT EXISTS blog (id INTEGER PRIMARY KEY, title varchar(100),link vachar(100),content text,postdate varchar(100),status Integer)')
    cursor.execute('select * from blog where link=\''+link+'\'')
    values=cursor.fetchall()
    if len(values) > 0:#链接以前就存在
        print('链接已经存在:'+link)
    else:
        cursor.execute('insert into blog (title, link,status) values (\''+title+'\', \''+link+'\',0)')
        conn.commit()
        print("save success."+link)    
# 关闭Cursor:
    cursor.close()
# 提交事务:
    conn.commit()
# 关闭Connection:
    conn.close()
    
for x in range(1,int(totalPage)+1): #代表从1到5(不包含5)9000-9700
    errorLink=[]
    try:
        getBlogList(str(x))
    except Exception  as e:
        print('except:', e)
        errorLink.append(x)
print("errorLink:"+str(errorLink));




2.抓取内容页面,将内容保存到数据库中
# -*- coding:utf-8 -*-

from bs4 import BeautifulSoup
import urllib.request
from urllib import request
# 导入SQLite驱动:
import sqlite3

	
def updateContent():
    conn = sqlite3.connect('blog.db')
    cursor = conn.cursor()
    cursor.execute('select * from blog where status=0')
    values = cursor.fetchall()
    
    for line in values:
        id=line[0]
        link=line[2]
        
        soup=getContent(link)
        
        try:
            title=soup.find('div', {'class': 'item-body'}).h2.span.get_text()
            postdate=soup.find('span', {'class': 'date'}).get_text();
            content=str(soup.find('div', {'class': 'item-content'}))#.get_text()
            end = "<div class=\"clear\"></div>"
            content=content[45:content.find(end)]
            
            print(link)
            cursor.execute('update blog set title=?,content=?,status=1,postdate=? where id=?',(title,content, postdate,id))
            conn.commit()
        except Exception  as e:
            print('except:', e)
    cursor.close()
    conn.commit()
    conn.close()


#根据链接获取内容
def getContent(link):
    #1.获取页面内容html
    html_doc="";
    #构造header,一般header至少要包含一下两项。这两项是从抓到的包里分析得出的。
    headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0',
           'Referer' : link}
           
    #打开登录主页面(他的目的是从页面下载cookie,这样我们在再送post数据时就有cookie了,否则发送不成功)
    
    try:
        #with request.urlopen(link) as f:
        #    html_doc=f.read()  
        request = urllib.request.Request(link, None, headers)
        html_doc=urllib.request.urlopen(request).read()
    except Exception  as e:
        print('except:', e)
            
    #2.分析页面内容,获取内容
    soup = BeautifulSoup(html_doc,"html.parser")
    return soup

#将所有没有内容的新闻,抓取一下,将内容填充进去
updateContent()

分享到:
评论

相关推荐

    python版CSDN博客备份工具-更新

    python版CSDN博客备份工具-更新 解决置顶报错问题

    python 华为锐捷交换机备份.zip

    本文将围绕"Python 脚本 交换机备份"这一主题,详细讲解如何使用Python编写脚本来实现华为和锐捷交换机的配置备份。 首先,我们要理解交换机配置文件备份的重要性。当设备出现故障或需要进行升级时,拥有备份的配置...

    python文件备份源码.rar

    在“python文件备份源码.rar”这个压缩包中,我们可以推测它包含的是使用Python编写的文件备份程序的源代码。这样的程序通常用于创建、管理和维护文件或目录的副本,以防原始数据丢失或损坏。 在Python中实现文件...

    python定时备份mysql数据库脚本

    本篇将详细解释如何使用Python编写一个定时备份MySQL数据库的脚本,以及如何通过代码实现仅保留最新几个备份文件的功能。 首先,我们需要了解Python中的两个关键库:`pymysql` 和 `schedule`。`pymysql` 是Python...

    mongodb4.2全量定时增量备份python脚本

    总的来说,这个Python脚本提供了一个自动化备份解决方案,它不仅执行全量备份,还能根据`oplog`实现增量备份,大大减少了备份所需的时间和存储空间。这对于大型数据库和高并发环境来说尤其重要,因为它允许在不影响...

    python实现psql数据库备份还原(两种方法)

    本文将详细介绍两种使用Python实现psql数据库备份和还原的方法,旨在为初学者提供清晰的指导。 首先,我们需要安装必要的库。Python中的`psycopg2`库是与PostgreSQL数据库进行交互的主要工具,因此需要确保它已经...

    python3实现sqlserver数据库和文件异地备份

    Python3写的脚本,windows上应用的,实现服务器上的数据库通过磁盘映射备份到本地其他机器上的共享文件夹中,服务器上指定文件夹下的文件也备份到指定共享文件夹中,并发邮件通知

    Python-Python爬虫小脚本爬搜狐新闻列表存入数据库爬新闻新闻采集

    这个名为"Python-Python爬虫小脚本爬搜狐新闻列表存入数据库爬新闻新闻采集"的项目,旨在教授如何利用Python编写简单的爬虫脚本,从搜狐新闻网站抓取新闻列表,并将这些数据存储到数据库中。以下是对这个项目涉及...

    python备份mysql到远程ftp的脚本

    使用说明 redhat7.5 mysql5.7 1、建立/root/backup/目录,将backupmysql.py放到该目录下,修改backupmysql.py中ftp ip 用户 密码 2、修改mysql配置vi /etc/my.cnf [mysqldump] user=root password=XXX 3、/root/...

    python-备份文件

    该脚本是用python编写,用于对每日文件进行压缩备份存放,适用于初学者,望多指教~

    python定期备份交换机配置文件二

    本文将介绍如何使用 Python Script 实现交换机配置文件的定期备份。 需要的模块 在实现交换机配置文件备份之前,需要安装两个 Python 模块:Paramiko 和 Schedule。Paramiko 模块用于实现 SSH 连接,而 Schedule...

    Python-一个基于Django博客系统

    Python-一个基于Django博客系统是一个使用Python编程语言和Django框架构建的应用程序,特别设计用于内容管理和在线发布。这个博客系统由两个主要部分构成:前台展示系统和后台编辑系统。这两个部分共同协作,为用户...

    python实现ftp下载备份

    FTP(File Transfer Protocol)是互联网上用于文件传输的标准协议,而利用Python实现FTP下载备份功能可以帮助我们自动化地从远程服务器获取数据,确保数据的安全与可访问性。本教程将详细介绍如何使用Python来实现这...

    基于python-flask的个人博客系统

    这个博客系统是基于Python和Flask框架开发的,它提供了一个个人博客平台,让用户可以方便地创建、编辑和分享自己的博客文章。这个博客系统具有用户认证、文章管理、评论系统等核心功能,同时还支持自定义主题和插件...

    基于Python Flask的个人轻博客系统源码 —— Py-Blog简化版

    使用Python 3.11和SQLite数据库,确保了系统的轻量级和高效性。 技术构成: - 主要编程语言:Python - 其他技术栈:JavaScript, CSS, HTML - 文件构成:共797个文件,包括但不限于以下类型: - 图片资源:456个PNG...

    Python实现备份文件实例

    本文实例讲述了Python实现备份文件的方法,是一个非常实用的技巧。分享给大家供大家参考。具体方法如下: 该实例主要实现读取一个任务文件, 根据指定的任务参数自动备份. 任务文件的格式: (注意,分号后面注释是不...

    pyton telnet自动备份交换机配置

    使用python编写的自动备份交换机配置的程序,单文件直接运行即可,目前只支持telnet方式连接交换机,支持华为、华三、锐捷交换机,通过tftp方式自动备份配置 管理信息表格为[管理信息.csv],和本程序放在同一个目录 ...

    Python开发-备份豆瓣计划

    7. **定时任务**: 为了实现定期备份,我们可以使用Python的`schedule`库或者其他定时任务工具如`APScheduler`,设置脚本在特定时间自动运行,从而实现数据的持续备份。 8. 版本控制:文件名`JimSunJing-douban_...

    基于Python的数据版本备份、回滚源代码

    本文将深入探讨如何使用Python来实现数据版本备份与回滚源代码,结合UDP和TCP传输协议,同时也会提及提供的文档和演示视频。 首先,让我们了解一下Python在数据备份中的应用。Python以其简洁的语法和丰富的库支持,...

    Python基于Flask框架个人博客网站设计

    ## 一个注重创作的轻博客系统,选用python语言flask框架开发,前端采用bootstrap4轻量模板,注重内容创作与工具开发 ## 用到的技术:python,flask,flask-wtf,flask-sqlalchemy,markdown,bootstrap4,mysql ...

Global site tag (gtag.js) - Google Analytics