欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第一次写博客

程序员文章站 2024-03-18 15:13:22
...

大家好,今天是本人第一次写博客。之前一直在进行Web前端的开发工作。最近想转入Python的学习,毕竟这个东西比较火嘛,。但是学了一段时间发现Python这个东西能做的事情太多了,从大数据处理到人工只能,机器学习,几乎Python是无所不能的。有人说,Python就好像是一个胶水,它能将其他语言“粘”在一起,现在稍微有点体会了。所以打算把最近几天的学习心得写下来,也算是对自己的一个总结吧。

今天是第一天,我想写一点关于Python最基础的东西,关于字符转换的问题。了解Python的同学可能都知道,Python这门语言对于中文的支持特别不好,那对于我们中国人来说怎么办呢?勤劳,勇敢,善良的中国人民怎么可能没有办法。这个问题还是在我做第一个Python爬虫程序的时候遇到的。首先我想说一下,我用的IDE是Sublime3,之所以用这个,主要还是因为我之前一直在做Web前端的开发,Sublime对于web开发的支持度非常好,所以习惯了。其实IDE这个东西没有什么标准和规范,就是自己用的顺手就可以了,Python的版本是Python 3.6.4。好了,先上代码吧。

# -*- coding:utf-8 -*-
import urllib
import time


i = 0
titlenames = [''] * 500
urls = [''] * 500
blogaddrs = ['http://blog.sina.com.cn/s/articlelist_1191258123_0_1.html', 			'http://blog.sina.com.cn/s/articlelist_1191258123_0_2.html',			'http://blog.sina.com.cn/s/articlelist_1191258123_0_3.html',			'http://blog.sina.com.cn/s/articlelist_1191258123_0_4.html',			'http://blog.sina.com.cn/s/articlelist_1191258123_0_5.html',			'http://blog.sina.com.cn/s/articlelist_1191258123_0_6.html',			'http://blog.sina.com.cn/s/articlelist_1191258123_0_7.html']
for blogaddr in blogaddrs:
	blogcontentpage = urllib.urlopen(blogaddr).read()
	html = 0
	while True:
		title = blogcontentpage.find(r'<a title', html)
		if title == -1:
	 		break
	 	titlehtml = blogcontentpage.find(r'.html', title)
	 	if titlehtml == -1:
	 		break
		titleend = blogcontentpage.find(r'</a>', titlehtml)
		if titleend == -1:
			break
		titlenames[i] = blogcontentpage[titlehtml + 7 : titleend]
		# print titlenames[i]
		href = blogcontentpage.find(r'href', title)
		if href == -1:
			break
		html = blogcontentpage.find(r'.html', href)
		if html == -1:
			break
		urls[i] = blogcontentpage[href + 6 : html + 5]
		# print urls[i]
		# 读取网页上的内容,创建文件
		contentitem = urllib.urlopen(urls[i]).read()
		# filename = "./weibofile/" + titlenames[i] + ".html"
		# 这里对文件名进行了重新处理,担心会有文件重名的现象,将原文件覆盖掉
		filename = "./weibofile/" + titlenames[i] + urls[i][-10:]
		# print filename
		open(filename.decode('utf-8'), 'w').write(contentitem)
		i = i + 1
		time.sleep(1)


上面的代码会把韩寒在新浪微博发表的所有文章下载到本地一个叫“weibofile”的文件夹中,这段代码很简单,但是我在存储文件名时发现了一点问题。我想用每篇文章的标题作为文件名来存储文件,但是如果直接用下面的方法来存储的话就会出现中文乱码的问题。

open(filename, 'w').write(contentitem)
很奇怪的是,同样的代码,如果在Nodepad++中编辑,然后运行,存储文件时就不会出现中文乱码的问题

我也是在网上找了很长时间才看到一篇文章,说需要把文件名做如下处理才可以正常存储中文

open(filename.decode('utf-8'), 'w').write(contentitem)
在Sublime中还出现另一个关于中文编码的问题。在Sublime2中编译后会出现正常的中文,但是到了Sublime3中会出现状况。Sublime3中如果打印中文, 中文内容都无法显示。下面是我代码的截图,请各位大神帮我看看

第一次写博客

最后我还想说一下在Sublime中编译Python的办法。

  1. 打开Sublime3,选择Tools -> Build System -> New Build System ...
  2. 将新文件中的内容替换为:
    {
    	"cmd":["python.exe", "-u", "$file"],
    	"path":"C:/Users/CNWISHE2/AppData/Local/Programs/Python/Python36-32",   // 注意:路径根据自己的python安装路径而定 
    	"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    	"selector": "source.python"
    }
  3. 将文件保存,文件名改成Python36.sublime-build。
  4. 这样就可以在Sublime中Ctrl+B直接编译Python3看结果了。

以上就是自己第一次写博客的全部内容了,最近一段时间会陆续的发表一些Python的学习心得,对自己这一段时间的学习总结一下

望与您共勉!