使用Scrapy中的Request的时候,怎么把拿到的内容编码转换为utf-8

使用Scrapy中的Request的时候,怎么把拿到的内容编码转换为utf-8,第1张

1、无论requests还是Request,都是一种http协议的实现包而已。

包返回报文的编码来源于HTTP协议所访问的网站,在http协议的头部会写明编码格式。

譬如 如下代码:

r=requests.get('http://www.baidu.com')

print r.headers['Content-Type']

输出:

text/htmlcharset=UTF-8

这里表明了应答报文的utf-8格式。

scrapy.Request也是一样。

2、如果返回的charset=gbk2312,你可以根据你的代码需要,确定是否转码成你需要的编码。

r=requests.get('http://www.baidu.com')

print r.content[:1000].decode('utf-8')

print r.content[:1000].decode('utf-8').encode('gbk')

1.scrapy的启动在对应的目录下:

如果在启动过程中出现"win32api"的错误 则pip install pypiwin32

2.正则表达式:

"""

^ 表示以什么开始如:^b表示以b字母开头

. 表示任意字符

* 表示前面的字符可以出现任意多次

$ 表示以什么结束如:3$表示以3结尾

? 表示非贪婪模式,正则表达式默认的是贪婪模式,贪婪模式是从后往前匹配

+ 表示前面的字符至少出现一次

{3}出现的次数 {3,}至少出现3次{3,5}至少出现3次最多5次

|表示或关系

\s 表示空格\S不为空格可以

\w表示[A-Za-z0-9]\W表示不为\w可以

[\u4E00-\u9FA5]表示汉字如line="study in 南京大学"reg=".*?([\u4E00-\u9FA5]+大学)"

\d表示数字

s.decode("gb2312").encode("utf-8")

encode 前面必须是unicode编码

decode是对前面("")格式转化为unicode

python3 不需要在声明,默认全部是unicode

"""

scrapy,需要安装scrapy的一些依赖包,以现有机子环境为例说明一些安装过程

系统:win7 64bit

安装步骤:

1.先安装Python,机子是64位的,所以Python最好安装64位的,不然依赖包安装出错,下载的是2.7版本。

2.安装scrapy依赖包,下载对应的Python2.7 64位版本:

pywin32;

Twisted:;

zope.interface;

lxml;

pyOpenSSL;

这些软件应用通过百度可以查询的到。

3.安装scrapy,可以直接下载scrapy回来通过setup.py install安装,也可以通过eazy_install scrapy安装,后面这种安装需要先安装eazy_install.py,安装完成后 在控制台输入scrapy,有信息输出说明安装成功。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/9991364.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存