楼主 python 学的不是很深,仿照网上实例,写了个爬虫 结果输出的好多乱码,也不是很清楚,target="_blank"后面这类属于什么编码,希望有了解的朋友指点下,谢谢:)
1
xiri 2019-03-20 15:14:19 +08:00 via Android 1
额,一般不是全转 utf-8 就可以了吗?
|
2
jianzhao123 OP @xiri 貌似不行啊,Python3.X 源码文件默认使用 utf-8 编码的
|
3
codechaser 2019-03-20 15:19:26 +08:00 via Android 1
@jianzhao123 至少把相关代码贴一下吧?看这个好像就是解码的问题
|
4
holajamc 2019-03-20 15:23:59 +08:00 1
In [1]: import requests
In [2]: url = 'https://baike.baidu.com/item/Python/407313' In [3]: headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebK ...: it/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36'} In [4]: r = requests.get(url=url, headers=headers) In [5]: '计算机程序设计语言' in r.text Out[5]: False In [6]: r.encoding = 'utf8' In [7]: '计算机程序设计语言' in r.text Out[7]: True |
5
ipwx 2019-03-20 15:24:02 +08:00 1
<!DOCTYPE html>
<!--STATUS OK--> <html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> <meta name="referrer" content="always" /> <meta name="description" content="百度百科是一部内容开放、自由的网络百科全书,旨在创造一个涵盖所有领域知识,服务所有互联网用户的中文知识性百科全书。在这里你可以参与词条编辑,分享贡献你的知识。"> <title>百度百科_全球最大中文百科全书</title> <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" /> <link rel="icon" sizes="any" mask href="//www.baidu.com/img/baidu.svg"> ... ---- 所以是 UTF-8。楼主的问题不在于不会 Python,而是不会 HTML。 |
6
xiri 2019-03-20 15:25:43 +08:00 via Android 1
@jianzhao123 python 的源码文件用 utf-8 跟这个没关系,你抓内容都时候要解码成 utf-8。
比如你用 requests 请求的话,要这样转一下码: ''' req = requests.get(url = http........) req.encoding = 'utf-8' ''' |
7
jianzhao123 OP @ipwx 楼主不是科班出身对 HTML 不是太了解,请问怎么操作呀,实在是不清楚 😂
|
8
jianzhao123 OP @xiri 道行太浅,多谢指点,OK 了
|
9
holajamc 2019-03-20 15:31:37 +08:00 1
@holajamc 流程大概是这样的,HTTP 的 response 合理的规范会在 Content-Type 中附带 chatset 信息,告知客户端服务端会使用什么样子的编码,比如你可以试试访问 github,看一看 response 的 headers 部分
但是这种设想都是十分美好的事情,比如百度百科的 Content-Type 仅仅只有页面类型,因此 requests 会使用 iso-8859 当然了也可以使用 requests 进行编码推测,这是一件开销很大的事情所以不要尝试~ |
11
vexetron 2019-03-20 15:32:50 +08:00 via iPhone
@jianzhao123 这和科班没关系
|
12
jianzhao123 OP @holajamc 明白了,谢谢
|
13
ipwx 2019-03-20 16:30:37 +08:00
|