http://www.hkexnews.hk/APP/SEHKAppMainIndex_c.htm
这个网站我用 request 请求没有问题 但是 scrapy 就出现下面字体
††††††††††††††㌮‼愠桲敦㴢卅䡋䅐偌楳瑥摃慳敟挮桴洢㻥랲諥뢂㰯愾㰯獴牯湧㸼⽰㸍ਠ††††††††††††††‼瀠慬楧渽≬敦琢㸼獴牯湧㸍ਠ††††††††††††††‴⸠㱡牥昽≨瑴瀺⼯睷眲步确敷献桫⽎敷┲が楳瑩湧猯䅰灬楣慴楯渥㈰偲潯春㈰慮搥㈰偈䥐⽒整畲湥搯䵡楮┲あ潡牤㽳损污湧㵺栭䡋∾ꯧ馼鸼⽡㸼⽳瑲潮朾㰯瀾㱢爾㱰汩杮㴢汥晴∾㱳瑲潮朾駨ꢻ㨼⽳瑲潮朾㱴慢汥㸍ਠ††††††††††††††††‼瑲㸍ਠ†††††††††††††††††‼瑤㻢鞏㰯瑤㸍ਠ†††††††††††††††††‼瑤㻦ꂹ髤뢻뿤뢊苨ꚏ蟧견臥薫䇧ꮠ諥뢂蓧钟ꧧꞑ胥薬룯벌뛥邍뇧떐뻦鲉豂跥궗ꗤ붜駨궘舼⽴搾ഊ†††††††††††††††††㰯瑲㸍ਠ††††††††††††††††‼瑲㸍ਠ†††††††††††††††††‼瑤㻢鞏㰯瑤㸍ਠ†††††††††††††††††‼瑤㻥薷跥邌闧ꖨ諦麶诧骄볨ꆌ뫯벌뛥邍뇧떐뻦鲉豗跥궗ꗤ붜駨궘舼⽴搾ഊ†††††††††††††††††㰯瑲㸍ਠ†††††††††††††††‼⽴慢汥㸍ਠ††††††††††††††‼⽰㸍ਠ†††††††††††††‼⽤楶㸼⽳灡渾㰯瑤㸍ਠ††††††††††‼⽴爾ഊ†††††††††††㱴爾ഊ††††††††††††㱴搠捯汓灡渽∲∾㱳灡渠楤㴢印慮ㄢ污獳㴢灭楮束扬慣欱㑢∾㱤楶瑹汥㴢摩獰污示楮汩湥∾㰯摩瘾㰯獰慮㸼⽴搾ഊ†††††††††††㰯瑲㸍ਠ††††††††††‼呒㸍ਠ†††††††††††‼呄潬印慮㴢㈢㸼獰慮污獳㴢灭楮朱㈢㸼獴牯湧㸼扲㸼扲㸼瀾돨ꮋ裦鲬諨膆諥뺌蟦隙蘼⽰㸼⽳瑲潮朾㰯獰慮㸼⽔䐾ഊ†††††††††††㰯呒㸍ਠ††††††††††‼瑲㸍ਠ†††††††††††‼瑤潬印慮㴢㈢㸍ਠ††††††††††††‼瑡扬攠獴祬攽≷楤瑨㨶〰灸∠捬慳猽≴慢汥彧牥祟扯牤敲猭牴敔慢汥ⵂ汵敔慢汥彃䡉∠獵浭慲礽∢⁷楤瑨㴢㘰〢㸍ਠ†††††††††††††‼瑢潤社ഊ†††††††††††††††㱴爾ഊ††††††††††††††††㱴搠睩摴栽∵〢㸼業朠獲挽∯業慧支獰慣敲楦∠睩摴栽∵〢敩杨琽∵∾㰯瑤㸍ਠ†††††††††††††††‼瑤⁷楤瑨㴢㠰∾들뮽㰯瑤㸍ਠ†††††††††††††††‼瑤⁷楤瑨㴢㐷〢㸼愠桲敦㴢卅䡋奥慲㈰ㄳ彣瑭∾㈰ㄳ㰯愾♮扳瀻♮扳瀻㱡牥昽≓䕈䭙敡爲〱㑟挮桴洢㸲〱㐼⽡㸦湢獰㬦湢獰㬼愠桲敦㴢卅䡋奥慲㈰ㄵ彣瑭∾㈰ㄵ㰯愾♮扳瀻♮扳瀻㱡牥昽≓䕈䭙敡爲〱㙟挮桴洢㸲〱㘼⽡㸦湢獰㬦湢獰㬼愠桲敦㴢卅䡋奥慲㈰ㄷ彣瑭∾㈰ㄷ㰯愾♮扳瀻♮扳瀻㱡牥昽≓䕈䭙敡爲〱㡟挮桴洢㸲〱㠼⽡㸦湢獰㬦湢獰㬼⽴搾ഊ†††††††††††††††㰯瑲㸍ਠ††††††††††††††‼瑲㸍ਠ†††††††††††††††‼瑤㸼⽴搾ഊ††††††††††††††††㱴搠捯汳灡渽∲∾㱡牥昽≄潣畭敮瑳⽓䕈䭃潮獯汩摡瑥摉湤數彣汳∠瑩瑬攽∢⁴慲来琽≟扬慮欢㻤뢋觧뚜裧뒢锼⽡㸼⽴搾ഊ†††††††††††††††㰯瑲㸍ਠ†††††††††††††‼⽴扯摹㸍ਠ††††††††††††‼⽴慢汥㸍ਠ†††††††††††‼⽴搾ഊ†††††††††††㰯瑲㸍ਠ††††††††††‼瑲㸍ਠ†††††††††††‼瑤潬印慮㴢㈢㸼獰慮搽≓灡渱∠捬慳猽≰浩湧彧牥礱㌵戢㸼摩瘠獴祬攽≤楳灬慹㩩湬楮攢㸼扲㸼⽤楶㸼⽳灡渾㰯瑤㸍ਠ††††††††††‼⽴爾ഊ†††††††††††㱴爾ഊ††††††††††††㱴搠捯汓灡渽∲∾㱳灡渠捬慳猽≶敲摟扬
1
leefsfd 2018-12-28 14:16:42 +08:00
编码问题.
|
2
liaowy 2018-12-28 14:55:00 +08:00
resp.text.encode('latin-1').decode('utf-8')
|
3
carlclone 2018-12-28 14:59:32 +08:00
这都不知道还玩爬虫呢....
|
4
lihongjie0209 2018-12-28 15:07:32 +08:00
In [10]: response.body.decode(encoding="utf-8")
Out[10]: '\ufeff<html lang="en" class="news-hkex">\r\n <head>\r\n <META http-equiv="Content-Type" content="text/html; charset=utf-16">\r\n <meta name="MS.LOCALE" content="ZH-TW">\r\n <title>:: HKEX :: HKEXnews ::</title>\r\n <meta http-equiv="Pragma" content="no-cache">\r\n <meta http-equiv="Cache-Control" content="no-cache">\r\n <meta charset="UTF-8">\r\n <meta name="viewport" content="width=device-width, initial-scale=1">\r\n <meta http-equiv="X-UA-Compatible" content="IE=edge">\r\n <link href="/ncms/css/main.css" rel="stylesheet"><script language="javascript" src="/script/hkex_common.js"></script><script language="javascript" src="/script/hkex_setting.js"></script><script type="text/javascript" src="/ncms/script/hkex_app.js"></script><script type="text/javascript" src="/ncms/script/hkex_settings.js"></script><script type="text/javascript" src="/ncms/script/hkex_widget.js"></script><script type="text/javascript" src="/ncms/script/vendor.js"></script><script type="text/javascript">\n \t var pageDefaultTitle = "申請版本,聆訊後資 料集及相關資料";\n \t var pageDefaultSubTitle = "";\n \t var pageDefaultBanner = "/ncms/media/HKEXnews/top_banner_bg.png";\n \t var pageDefaultTabletBanner = "/ncms/media/HKEXnews/top_banner_bg_tablet.png";\n \t var overrideBreadcrumb = [{\n \t \t\ttitle: "申請版本,聆訊後資料集及相關資料",\n \t \t\turl: "http://www2.hkexnews.hk/New-Listings/Application-Proof-and-PHIP?sc_lang=zh-HK"\n \t },{\n \t \t\ttitle: "新上市",\n \t \t\turl: window.location.href\n \t \t\t}]\n \t var overridePageTools = {};\n \t overridePageTools.showlastupdate = 0;\n \t overridePageTools.showprint = 0;\n\t\t </script><link rel="stylesheet" href="/css/hkex_css.css" type="text/css"><script type="text/javascript">\n\t\t\t\t\t\tfunction PrintFriendlyUTF() |
5
lanqing 2018-12-28 16:04:24 +08:00
从表面上看,scrapy 请求返回的数据被 decode(使用 latin-1|ISO-8859-1),所以 encode('latin-1').decode('utf-8')就行
#2 #4 都行 |
7
Ewig OP @lanqing 你用 scrapy 试过吗?我试过打印的是空
print(response.text.encode('latin-1').decode('utf-8')) 我这样写的 |
9
Ewig OP @lihongjie0209 def parse(self, response):
print(response.body.decode(encoding="utf-8")) linkList =response.body.decode(encoding="utf-8").xpath( '//td[@class="pming_black12 ms-rteTableOddCol-BlueTable_CHI"]/a/@href') nameList = response.body.decode(encoding="utf-8").xpath( '//td[@class="pming_black12 ms-rteTableOddCol-BlueTable_CHI"]/a/text()') 我在 scrapy 里面这样写好像不行,说这是字符串没有 xpath,如何写才是正确的 |
10
lihongjie0209 2018-12-29 11:00:21 +08:00
@Ewig 你还是多搞搞基础吧, 没办法一步一步教你
|
11
atencheung 2018-12-29 14:05:24 +08:00
编码的问题,我一般是这么解决的
import requests response = requests.get('http://xxxxxx') response.encoding = "gbk2312" # 这里就是对方网站的编码格式 print(response.text) 这样一般就该返回的正常的,不会乱码了 |