兴趣来潮,爬了下51job,但是遇到编码问题!以下是简单的一段代码

获取整个页面数据

# -*- coding:utf-8 -*-
import requests
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
def spider(url):
session = requests.Session()
html = session.get(url, headers=headers)
return html url = 'http://www.51job.com/'
html = spider(url)

结果:

print html.encoding
>>>ISO-8859-1

html.text中的某一段

print html.text
>>>langs : {
ts_qxjzw : 'ÇëÑ¡Ôñְλ' ,
queren : 'È·ÈÏ' ,
guanbi : '¹Ø±Õ' ,
yxdd : 'ÒÑÑ¡µØµã' ,
yxzn : 'ÒÑѡְÄÜ' ,
yxhy : 'ÒÑÑ¡ÐÐÒµ' ,
nzdnxj : 'Äú×î¶àÄÜÑ¡Ôñ' ,
xiang : 'Ïî' ,
xjdq : 'Ñ¡ÔñµØÇø' ,
xj_xg : 'Ñ¡Ôñ/ÐÞ¸Ä' ,
zycs : 'Ö÷Òª³ÇÊÐ' ,
sysf : 'ËùÓÐÊ¡·Ý' ,
tspd : 'ÌØÊâÆµµÀ',
qxjgzdd : 'ÇëÑ¡Ôñ¹¤×÷µØµã' ,
qxjznlb : 'ÇëÑ¡ÔñÖ°ÄÜÀà±ð' ,
qxjhylb : 'ÇëÑ¡ÔñÐÐÒµÀà±ð' ,
gzdd : '¹¤×÷µØµã' ,
buxian : '²»ÏÞ'
} ,

我设置html.text.decode('ISO-8859-1'),报错!UnicodeEncodeError: 'ascii' codec can't encode characters in position 249-254: ordinal not in range(128)

翻阅了些资料,最终添加了 html.encoding = 'gbk',搞定!

代码:

# -*- coding:utf-8 -*-
import requests
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
def spider(url):
session = requests.Session()
html = session.get(url, headers=headers)
html.encoding = 'gbk'
return html url = 'http://www.51job.com/'
html = spider(url)

展示html中的一段

print html.text
>>>langs : {
ts_qxjzw : '请选择职位' ,
queren : '确认' ,
guanbi : '关闭' ,
yxdd : '已选地点' ,
yxzn : '已选职能' ,
yxhy : '已选行业' ,
nzdnxj : '您最多能选择' ,
xiang : '项' ,
xjdq : '选择地区' ,
xj_xg : '选择/修改' ,
zycs : '主要城市' ,
sysf : '所有省份' ,
tspd : '特殊频道',
qxjgzdd : '请选择工作地点' ,
qxjznlb : '请选择职能类别' ,
qxjhylb : '请选择行业类别' ,
gzdd : '工作地点' ,
buxian : '不限'
} ,

爬取51job职位信息之编码问题的更多相关文章

  1. 【图文详解】scrapy爬虫与动态页面——爬取拉勾网职位信息(2)

    上次挖了一个坑,今天终于填上了,还记得之前我们做的拉勾爬虫吗?那时我们实现了一页的爬取,今天让我们再接再厉,实现多页爬取,顺便实现职位和公司的关键词搜索功能. 之前的内容就不再介绍了,不熟悉的请一定要 ...

  2. python网络爬虫之解析网页的XPath(爬取Path职位信息)[三]

    目录 前言 XPath的使用方法 XPath爬取数据 后言 @(目录) 前言 本章同样是解析网页,不过使用的解析技术为XPath. 相对于之前的BeautifulSoup,我感觉还行,也是一个比较常用 ...

  3. node.js爬虫爬取拉勾网职位信息

    简介 用node.js写了一个简单的小爬虫,用来爬取拉勾网上的招聘信息,共爬取了北京.上海.广州.深圳.杭州.西安.成都7个城市的数据,分别以前端.PHP.java.c++.python.Androi ...

  4. 基于selenium爬取拉勾网职位信息

    1.selenium Selenium 本是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.而这一特性为爬虫开发提供了一个选择及方向,由于其本身依赖 ...

  5. python爬虫(三) 用request爬取拉勾网职位信息

    request.Request类 如果想要在请求的时候添加一个请求头(增加请求头的原因是,如果不加请求头,那么在我们爬取得时候,可能会被限制),那么就必须使用request.Request类来实现,比 ...

  6. python爬取拉勾网职位信息-python相关职位

    import requestsimport mathimport pandas as pdimport timefrom lxml import etree url = 'https://www.la ...

  7. 【实战】用request爬取拉勾网职位信息

    from urllib import request import urllib import ssl import json url = 'https://www.lagou.com/jobs/po ...

  8. Python的scrapy之爬取51job网站的职位

    今天老师讲解了Python中的爬虫框架--scrapy,然后带领我们做了一个小爬虫--爬取51job网的职位信息,并且保存到数据库中 用的是Python3.6  pycharm编辑器 爬虫主体: im ...

  9. 爬取拉勾网招聘信息并使用xlwt存入Excel

    xlwt 1.3.0 xlwt 文档 xlrd 1.1.0 python操作excel之xlrd 1.Python模块介绍 - xlwt ,什么是xlwt? Python语言中,写入Excel文件的扩 ...

随机推荐

  1. Android - Style问题

    转自:http://jingyan.baidu.com/article/c910274be7536acd361d2dca.html 转自:http://blog.sina.com.cn/s/blog_ ...

  2. PHP-004

    'URL_CASE_INSENSITIVE'  =>  true,设置为true的时候表示URL地址不区分大小写,这个也是框架在部署模式下面的默认设置. URL模式 : URL_MODEL设置 ...

  3. eclipse中debug模式不能启动运行,run运行模式却能启动运行!

    这个问题我郁闷了好久!问题原因:因为断点太多了,断点冲突了. 解决办法:只要进如deug界面,选择BreakPoints选项,然后清除所有断点,再重新debug启动.问题解决! 希望能帮到遇到此问题的 ...

  4. 【RF库测试】关键字get time

    *** Test Cases ***Timestamp ${time} GET TIME ${secs} GET TIME epoch ${year} GET TIME return year ${y ...

  5. 关于MCU的烧录,下载与其他接口的比较(二)

    单片机应用系统由硬件和软件组成,软件的载体是硬件的程序存储器,程序存储器采用只读存储器,这种存储器在电源关闭后,仍能保存程序,在系统上电后,CPU可取出这些指令重新执行.只读存储器(Read Only ...

  6. lua垃圾回收机制

    一.检测lua内存泄漏: 注:使用“collectgarbage("collect")”,局部变量v被回收,my_list没有被回收. 注:局部变量v占用的内存被回收. 注:将my ...

  7. php查询操作实现投票功能

    这篇文章主要为大家详细介绍了php查询操作实现投票功能的具体代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下   本文实例为大家分享了php查询操作实现投票功能的代码,供大家参考,具体内容如下 ...

  8. iGson

    头文件 #import <Foundation/Foundation.h> #import <objc/runtime.h> #import "NSString+Ut ...

  9. 在ubuntu 10.04 上QGIS的安装步骤

    进入管理员账户后,打开/etc/apt/sources.list. 添 加 deb http://ppa.launchpad.net/ubuntugis/ubuntugis-unstable/ubun ...

  10. c++ 利用new动态的定义二维数组

    #include <iostream> using namespace std; int main() { , col = ; // key code: 申请空间 int **edge = ...