`
mushme
  • 浏览: 788476 次
  • 性别: 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备份mysql数据库

    当谈到使用Python来备份MySQL数据库时,我们可以借助一些工具和库实现这一目标。在这个场景中,"python备份mysql数据库"的实践主要涉及到以下几个核心知识点: 1. Python语言:Python是一种高级编程语言,以其简洁...

    python交换机自动备份脚本

    Python交换机自动备份脚本是一种高效管理网络设备的方法,它能帮助网络管理员便捷地备份多个交换机的配置,包括华为、思科、华三和Aruba等不同品牌的设备。这样的脚本大大提高了工作效率,减少了手动操作的繁琐和...

    使用python自动备份文件打包脚本

    使用python语言写的打包备份文件脚本,使用tar命令进行打包。自定义备份目录,和备份源文件目录。

    python自动备份mysql数据库,并删除七天前文件

    本示例涉及的主题是使用Python来自动备份MySQL数据库,并且定期清理过期的备份文件,以保持存储空间的有效利用。下面将详细介绍这个过程以及相关的知识点。 首先,我们需要了解Python在数据库操作中的角色。Python...

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

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

    Python-备份站点目录和数据库支持备份到ftposscosemail

    标题中的“Python-备份站点目录和数据库支持备份到ftposscosemail”表明这是一个使用Python编写的脚本或工具,其主要功能是自动化地备份网站的目录内容和数据库,并且可以将备份文件上传到FTP服务器、阿里云OSS...

    python文件备份源码.rar

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

    python定时备份文件

    本话题主要探讨如何使用Python实现文件的定时压缩备份。这个过程通常涉及两个关键部分:定时器和文件压缩。以下是对这两个核心知识点的详细阐述: 1. **Python定时器**: Python中有多种方式可以实现定时任务,...

    python定时备份mysql数据库脚本

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

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

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

    python版CSDN博客备份工具

    使用python脚本做的一个简易csdn blog备份工具,将blog全部按照类别保存到本地。可以配合htm2chm做成chm集合。

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

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

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

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

    网络备份 网络上传 python

    本篇文章将详细探讨如何使用Python来实现网络备份和上传的过程。 首先,我们要理解网络备份的基本概念。网络备份是指将本地数据通过网络传输到远程服务器或另一台设备上,以防止数据丢失或损坏。这种备份方式可以...

    基于python的个人博客系统的设计与实现(包含数据库).zip

    总的来说,这个基于Python的个人博客系统展示了Python在Web开发中的强大能力,结合数据库的使用,实现了用户友好的交互和数据持久化。对于学习者和开发者而言,通过深入研究这个项目,可以掌握Python Web开发的核心...

    Python-一个基于Django博客系统

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

    python实现ftp下载备份

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

    基于python开发的博客系统源代码含有详细注释+使用说明.zip

    基于python开发的博客系统源代码含有详细注释+使用说明.zip基于python开发的博客系统源代码含有详细注释+使用说明.zip基于python开发的博客系统源代码含有详细注释+使用说明.zip基于python开发的博客系统源代码含有...

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

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

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

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

Global site tag (gtag.js) - Google Analytics