GBK错误

用CMD测试代码的时候,因为CMD默认用gbk支持print(),当UTF字符集出现超出GBK编码的字符是就会出现:

UnicodeEncodeError: ‘gbk’ codec can’t encode character u’\u200e’ in position 43: illegal multibyte sequence

可以在decode时,增加参数ignore对错误进行忽略。

bytes.decode(encoding="utf-8", errors="strict")bytearray.decode(encoding="utf-8", errors="strict")

Return a string decoded from the given bytes. Default encoding is ‘utf-8‘. errors may be given to set a different error handling scheme. The default for errors is ‘strict‘, meaning that encoding errors raise a UnicodeError. Other possible values are ‘ignore‘, ‘replace‘ and any other name registered via codecs.register_error(), see section Error Handlers. For a list of possible encodings, see section Standard Encodings.

import urllib.request
from bs4 import BeautifulSoup

def trade_spider(max_pages):

    headers = {‘User-Agent‘:‘Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11‘,
    ‘Accept‘:‘text/html;q=0.9,*/*;q=0.8‘
    }

    opener = urllib.request.build_opener()
    opener.addheaders = [headers]
    page=1
    while page <= max_pages:
        url=r‘http://news.zjicm.edu.cn/web_2/pages/type.php?Page_Id=8C2D81A53403FED2AEE8F706017F8C3E&PageNo=‘ + str(page)
        source_code=data = opener.open(url).read()
        soup=BeautifulSoup(source_code,"html.parser")
        for link in soup.find(class_=‘list-nopic‘).find_all(‘a‘):
            str1=link.string.encode(‘gbk‘,errors=‘ignore‘)
            print(str1.decode(‘gbk‘,errors=‘ignore‘))
        page += 1

trade_spider(10)
时间: 2024-10-06 21:53:47

GBK错误的相关文章

防止 apk反编译 jocky-- java混淆代码 (转至:http://my.oschina.net/f839903061/blog/72554)

1.下载jocky,解压后把整个文件夹复制到Eclipse的plugin目录.2.重启Eclipse,在项目上点右键,如果出现jocky菜单,则安装成功. 3.在项目上点右键,选菜单jocky->jocky setting,弹出菜单后设置如图 4.点ok后,将在项目的根目录下生成一个jocky_build.xml文件,事实上是一个ant build文件.打开这个文件,作适当修改<?xml version="1.0" encoding="UTF-8" st

Hololens文件读写

unity 内勾选 RemovableStorage 选项或 Package.appxmanifest 勾选 可移动存储 选项 uwp app IO操作用StreamReader 或 www 不适用,如: 1 using UnityEngine; 2 using System.IO; 3 public class test : MonoBehaviour 4 { 5 6 void Start () 7 { 8 string path = Path.Combine(Application.stre

解析WEB开发编码问题

URL: http://tcking.javaeye.com/blog/726643 在进行web开发的时候经常会遇到乱码的问题,乱码一般出现在: 1.写在jsp文件中的中文变成乱码 2.页面的中文都变成乱码 3.后台通过request.getParameter()乱码 编码的基础知识 计算机只能以字节为单位存储和传输信息,而人需要看的是字符串,字节和字符串之间的对应关系就是字符集,例如字符“中”使用UTF-8字符集映射的字节为:E4 B8 AD 三个字节,同样反过来,这三个字节通过UTF-8字

学习Sass

一.什么是sass? 写过css的都知道,css是用来改变页面样式的.但它不是一种编程语言,没有变量,函数,继承等功能,只能一条条抒写样式语句很死板.在这个工具决定效率的时代,这是不能容忍的事情.怎样将css也通过编程的方式来实现呢?sass就应运而生了.sass也被称为“css预处理器”,其抒写风格和css相似,同时具有动态语言的特点,可减少很多重复的代码.经过编译可生成标准的css文件. 二.安装sass sass是Ruby语言编写的(两者的语法没有关系别担心不懂ruby),所以必须先安装R

蓝的成长记——追逐DBA(18):小机上WAS集群故障,由一次更换IP引起

原创作品.出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明出处.否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/47720043 [简单介绍] 个人在oracle路上的成长记录,当中以蓝自喻.分享成长中的情感.眼界与技术的变化与成长.敏感信息均以其他形式去掉,不会泄露不论什么企业机密,纯为技术分享. 创作灵感源于对自己的自省和记录.若能对刚刚起步的库友起到些许的帮助或共鸣,欣慰不已.

Sublime text 2/3 [Decode error - output not utf-8] 完美解决方法

分类: 其他2014-05-12 09:52 8063人阅读 评论(9) 收藏 举报 sublime text有时运行会输出以下错误信息: [Decode error - output not utf-8]或者[Decode error - output not gbk] 错误信息意思就是脚本输出的信息不是某种指定编码. 指定的编码一般在XX.sublime-build里,比如ruby.sublime-build的内容为: [python] view plaincopy { "shell_cmd

探究 encode 和 decode 的使用问题(Python)

很多时候在写Python程序的时候都要在头部添加这样一行代码 #coding: utf-8 或者是这样 # -*- coding:utf-8 -*- 等等 这行代码的意思就是设定同一编码格式为utf-8 计算机中存储数据的编码方式多种多样, 常用的有 unicode, utf-8, gbk, 等等 在Windows系统下,文本文件默认保存的格式应该是gbk 在以一种编码格式保存文件时,应该使用相同的编码进行解析此文件, 不然可能会出现乱码情况 今天就是想记录一下我在写Python程序时,在解析字

python中yaml模块的使用

1.yaml库的导入 经过尝试,发现在python2 和python3语言环境下,安装yaml库的命令行语句不一样. python2: pip install yaml python3:pip install pyyaml 安装成功后, 在脚本里导入的语句,都是   import yaml 2.编写yaml配置文件yaml002 ? 注意事项:yaml配置文件的书写要严格按照规范 3.编写解析yaml文件的python脚本:yamlTest002.py 当第一步安装yaml库成功了,就表示可以有

subprocess 模块的复习

import subprocess cmd = input('cmd>>>:') obj = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE) print(obj.stdout.read().decode('gbk')) # 正确命令返回的结果 print(obj.stderr.read().decode('gbk')) # 错误的命令返回的结果 # subprocess获取到的数