用Python 抓取的UTF8网页无法decode('utf-8')

Python013

用Python 抓取的UTF8网页无法decode('utf-8'),第1张

估计就是个别字符有问题,即

本来标称utf-8,但是实际上个别字符不是utf-8,比如是gb2312

结果导致错误。

常见的解决办法是,添加ignore参数,比如:

decodedUnicodeHtml = yourHtml.decode("UTF-8", 'ignore')

就可以正常解码了。

更多相关内容可参考:

【总结】Python 2.x中常见字符编码和解码方面的错误及其解决办法

(此处没法发布地址,请自己google搜帖子标题,即可找到帖子地址)

如何让python调用C和C++代码

安装python后,会有一个chm格式的python手册。要搞明白如何让python调用C/C++代码(也就是写python的 extension),你需要征服手册中的

<<Extending &&embedding>>厚厚的一章。在昨天花了一个小时看地头晕脑胀,仍然不知道如何写python的extension后,查阅了一些其他 书籍,最终在<<Python Programming On Win32>>书中找到了教程。

下面记录一下如何在visual studio 2005中,写一段C/C++的MessageBox代码,然后提供后python调用,最后的结果当然是显示一个MessageBox.

1. 首先要明白的是,所谓的python扩展(也就是你提供给python的c/c++代码,不一定是c/c++代码,可以是其他语言写的代码)是一个 dll,并且这个dll放在本机python安装目录下的DLLs目录下(譬如我机器上的路径是:F:\Program Files\Python25\DLLs),假如我们接下来要写的扩展module名为mb,python调用的代码为: import mb

mb.showMsg("Python's really amazing, I kindda love it!")

python怎么找到我们的mb模块呢?就是上面说的,我们要生成一个mb.dll,然后拷贝到Dlls目录下面,为了区别普通的dll和python专用扩展的dll,我们的 mb.dll修改成mb.pyd(python dll)

2. 搭建环境,我们要使用python提供的c头文件和lib库来进行扩展的开发。 在vs 2005下点击菜单 "工具"->"选项", 打开选项对话框,选择"项目和解决方案->VC++目录", 然后在右边"显示以下内容的目录"得comboBox上选择"包含文件”,添加python的include目录(我的机器上是"F:\Program

Files\Python25\include"),然后选择库文件,添加python的libs目录(我的机器上是"F:\Program Files\Python25\libs")。

既然扩展是一个dll,接下来我们要建立一个“动态链接库”工程,然后开始写代码:

#include <python.h>//python.h是包含python一些定义的头文件,在python的include目录下 /*

我的python版本是2.5, 因为安装python后它没提供debug下的lib库文件,因此你必须生成release版的dll,

想要生成dll版本的,你要到python官网上自己去下载python源代码,当然你可以继续生成release版本的dll,但dll中包含调试信息