导航:首页 > 数据处理 > pythin提取数据乱码怎么办

pythin提取数据乱码怎么办

发布时间:2022-12-26 18:42:08

‘壹’ python爬虫抓下来的网页,中间的中文乱码怎么解决

对于python的中文编码问题可以参考下面的帖子
http://python.jobbole.com/85482/

同时,对于网页的中文乱码,建立使用requests模块代替urllib\urllib2
requests的content方法,对中文编码,支持比较好,基本不会出现乱码。
req=requests.get(url,cookies=mecookies)
print req.content

具体用法,参见下面两个帖子,较详细:
http://blog.csdn.net/iloveyin/article/details/21444613
http://blog.csdn.net/alpha5/article/details/24964009

‘贰’ python中文乱码是怎么一回事

python报错invalid character in identifier,意思就是“标识符中的无效字符”,检查下有没有字符是中文的,把中文字符改成英文字符再运行就可以了。

Python的作者有意的设计限制性很强的语法,使得不好的编程习惯(例如if语句的下一行不向右缩进)都不能通过编译。其中很重要的一项就是Python的缩进规则。

一个和其他大多数语言(如C)的区别就是,一个模块的界限,完全是由每行的首字符在这一行的位置来决定的(而C语言是用一对花括号{}来明确的定出模块的边界的,与字符的位置毫无关系)。这一点曾经引起过争议。

因为自从C这类的语言诞生后,语言的语法含义与字符的排列方式分离开来,曾经被认为是一种程序语言的进步。不过不可否认的是,通过强制程序员们缩进(包括if,for和函数定义等所有需要使用模块的地方),Python确实使得程序更加清晰和美观。

(2)pythin提取数据乱码怎么办扩展阅读

Python 中文编码:

Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错。

解决方法为只要在文件开头加入# -*- coding: UTF-8 -*-或者# coding=utf-8就行了

注意:# coding=utf-8的=号两边不要空格。

实例:

(Python 2.0+)

#!/usr/bin/python

# -*- coding: UTF-8 -*-

print( "你好,世界" )

输出结果为:

你好,世界

‘叁’ 为什么Python写的爬虫有时候抓取的数据是乱码

# -*- coding:utf-8 -*-

import urllib2
import re

url='http://tieba..com/p/3295185529?see_lz=1'

#打开页面并进行转码
page=urllib2.urlopen(url).read().decode('gbk')
print 'Open %s'%url

#去掉超链接和图片
none_re=re.compile('<a href=.*?>|</a>|<img.*?>')

#换行符转换
br_re=re.compile('<br>')

#标题
title_re=re.compile('<h1 class="core_title_txt " title="(.*?)"')
#帖子内容
content_re=re.compile('<div id="post_content_\d*" class="d_post_content j_d_post_content ">(.*?)</div>')

#搜索文章标题,并去掉文件标题可能含有的特殊符号
title=re.search(title_re,page)
title=title.group(1).replace('\\','').replace('/','').replace(':','').replace('*','').replace('?','').replace('"','').replace('>','').replace('<','').replace('|','')

#搜索文本内容
content=re.findall(content_re,page)

with open('%s.txt'%title,'w') as f:
print 'Writing %s.txt now...'%title
for i in content:

#对html特殊符号进行替换处理
i=re.sub(none_re, '', i)
i=re.sub(br_re, '\n', i)

#写入文本文件
f.write(i.encode('utf-8').strip()+'\n')
print 'Done!'

‘肆’ Python+requests 爬取网站遇到中文乱码怎么办

最近刚开始使用python来做爬虫爬取相关数据,使用了python自带的urllib和第三方库requests,解析html使用了beautifulsoup以及lxml
这里说下lxml,lxml是python的一个html、xml解析库,lxml使用XPath能快速,简单的定位元素并获取信息。下面进入正题

1. 遇到的中文乱码问题
1.1 简单的开始
使用requests来拔取网站内容十分方便,一个最简单的代码段只需要2-3行代码就行。

点击(此处)折叠或打开

‘伍’ 为什么python写的爬虫有时候抓取的数据是乱码

1. 使用chrome浏览器,打开示例页面http://tieba..com/p/3295185529?see_lz=1
2. 在帖子标题处,右键选择"审查元素",可以看到标题的源代码

3. 进行简单的分析,我们需要获取的是title后面的内容,根据页面实际内容,我们编写相应的正则表达式:
title_re=re.compile('<h1 class="core_title_txt " title="(.*?)"')
4. 同理,我们对帖子内容进行"审查元素",得到内容的源代码

5. 编写相应的正则表达式如下:
content_re=re.compile('<div id="post_content_\d*" class="d_post_content j_d_post_content ">(.*?)</div>')
6. 这样通过urllib2打开页面后,使用上述的正则表达式进行匹配,再对标题和文本内容进行相应的处理即可

‘陆’ python爬取数据出现乱码怎么办

使用decode解码

str=u'u662f'
print(str.encode().decode('utf-8'))

或者在py文件开头,添加

#-*-coding:utf-8-*-

‘柒’ python读取共享内存数据时出现乱码

1. Python文件设置编码 utf-8 (文件前面加上 #encoding=utf-8)
2. MySQL数据库charset=utf-8
3. Python连接MySQL是加上参数 charset=utf8
4. 设置Python的默认编码为 utf-8 (sys.setdefaultencoding(utf-8)

‘捌’ python输出到文件乱码如何解决

python代码文件的编码
py文件默认是ASCII编码,中文在显示时会做一个ASCII到系统默认编码的转换,这时就会出错:SyntaxError: Non-ASCII character。需要在代码文件的第一行或第二行添加编码指示:
1 # coding=utf-8 ##以utf-8编码储存中文字符
2 print '中文'
像上面那样直接输入的字符串是按照代码文件的编码来处理的,如果用unicode编码,有以下三种方式:
1 s1 = u'中文' #u表示用unicode编码方式储存信息
2 s2 = unicode('中文','gbk')
unicode是一个内置函数,第二个参数指示源字符串的编码格式。
decode是任何字符串具有的方法,将字符串转换成unicode格式,参数指示源字符串的编码格式。
encode也是任何字符串具有的方法,将字符串转换成参数指定的格式。
(2)、字符串的编码
用 u'汉字' 构造出来的是unicode类型,不用的话构造出来是str类型
str的编码是与系统环境相关的,一般就是sys.getfilesystemencoding()得到的值
所以从unicode转str,要用encode方法
从str转unicode,所以要用decode
例如:
# coding=utf-8 #默认编码格式为utf-8
s = u'中文' #unicode编码的文字
print s.encode('utf-8') #转换成utf-8格式输出
但当python中间处理非ASCII编码时,经常会出现如下错误:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128)
0x??是超出128的数字,python在默认的情况下认为语言的编码是ascii编码,所以无法处理其他编码,需要设置python的默认编码为所需要的编码。
一个解决的方案是在代码中添加:
import sys
reload(sys)
sys.setdefaultencoding('utf-8') (其中utf-8为你想输出的字符编码)
解释:
sys.setdefaultencoding方法在python导入site.py后就删除了(具体代码查看site.py就可以看到)因此如果想用的话可以再重新load进入
总结:
u=u'unicode编码文字'
g=u.encode('gbk') #转换为gbk格式
print g #此时为乱码,因为当前环境为utf-8,gbk编码文字为乱码
str=g.decode('gbk').encode('utf-8') #以gbk编码格式读取g(因为他就是gbk编码的,需要事先知道它是GBK编码)并转换为utf-8格式输出
print str #正常显示中文(同文件输出)
安全的方法:
s.decode('gbk','ignore').encode('utf-8′) #以gbk编码读取(当然是读取gbk编码格式的文字了)并忽略错误的编码,转换成utf-8编码输出。
推荐学习《Python教程》!

阅读全文

与pythin提取数据乱码怎么办相关的资料

热点内容
机顶盒怎么加程序 浏览:181
市场调研分哪些 浏览:622
房产中介收房子应该走什么程序 浏览:208
c程序循环语句是什么 浏览:177
海信电视哪个市场好 浏览:442
成熟的男人和程序员应该选哪个 浏览:587
信息量是怎么算 浏览:778
大数据什么是绩效考核 浏览:622
旅游优惠信息哪里看 浏览:600
高速倒车多久会收到信息 浏览:401
杭州联通信息中心电话是多少 浏览:356
电力系统单机信息上传是怎么工作 浏览:68
东凤最大的市场是哪个 浏览:97
杭州地铁技术管理人员待遇怎么样 浏览:176
工厂合资技术分多少 浏览:986
罗马交易所的币是哪里来的 浏览:343
为什么交易猫发货了没反应 浏览:768
哪些渠道可以获取到新店信息 浏览:280
系统技术升级中请稍后登录什么意思 浏览:334
产权转让怎么交易 浏览:754