python免费下载csdn_[python学习] 模仿浏览器下载CSDN源文并实现PDF格式备份

最近突然想给自己的博客备份下,看了两个软件:一个是CSDN博客导出软件,好像现在不能使用了;一个是豆约翰博客备份专家,感觉都太慢,而且不灵活,想单独下一篇文章就比较费时。而且我的毕业论文是基于Python自然语言相关的,所以想结合前面的文章用Python实现简单的功能:

1.通过网络下载本体的博客,包括图片;

2.在通过Python把HTML转换成PDF格式;

3.如果可能,后面可能会写文章对代码采用特定的方式进行处理。

言归正传,直接上代码通过两个方面进行讲解。

一. 设置消息头下载CSDN文章内容

获取一篇文章Python的代码如下,如韩寒的新浪博客:(文章最后的总结有我以前关于Python爬虫博文链接介绍)

import urllib

content = urllib.urlopen("http://blog.sina.com.cn/s/blog_4701280b0102eo83.html").read()

open('blog.html','w+').write(content)

但是很多网站都防止这种获取方式,如CSDN会返回如下html代码:“403 Forbidden错误”:

403 Forbidden

403 Forbidden


nginx

此时通过设置消息头或模仿登录,可以伪装成浏览器实现下载。代码如下:

#coding:utf-8

import urllib

import urllib2

import cookielib

import string

import time

import re

import sys

#定义类实现模拟登陆下载HTML

class GetInfoByBrowser:

#初始化操作

#常见错误:AttributeError: .. instance has no attribute 'opener' 是双下划线

def __init__(self):

socket.setdefaulttimeout(20)

self.headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0'}

self.cookie_support = urllib2.HTTPCookieProcessor(cookielib.CookieJar())

self.opener = urllib2.build_opener(self.cookie_support,urllib2.HTTPHandler)

#定义函数模拟登陆

def openurl(self,url):

urllib2.install_opener(self.opener)

self.opener.addheaders = [("User-agent",self.headers),("Accept","*/*"),('Referer','http://www.google.com')]

try:

result = self.opener.open(url)

content = result.read()

open('openurl.html','w+').write(content)

print content

print 'Open Succeed!!!'

e

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值