V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
Ewig
V2EX  ›  Python

scrapy 请求某繁体网站内容不一样,这是为啥?

  •  
  •   Ewig · 2018-12-28 14:14:40 +08:00 · 2236 次点击
    这是一个创建于 2182 天前的主题,其中的信息可能已经有所发展或是发生改变。

    http://www.hkexnews.hk/APP/SEHKAppMainIndex_c.htm

    这个网站我用 request 请求没有问题 但是 scrapy 就出现下面字体

    ††††††††††††††㌮‼愠桲敦㴢卅䡋䅐偌楳瑥摃慳敟挮桴洢㻥랲諥뢂㰯愾㰯獴牯湧㸼⽰㸍ਠ††††††††††††††‼瀠慬楧渽≬敦琢㸼獴牯湧㸍ਠ††††††††††††††‴⸠㱡⁨牥昽≨瑴瀺⼯睷眲⹨步确敷献桫⽎敷┲が楳瑩湧猯䅰灬楣慴楯渥㈰偲潯春㈰慮搥㈰偈䥐⽒整畲湥搯䵡楮┲あ潡牤㽳损污湧㵺栭䡋∾ꯧ馼鸼⽡㸼⽳瑲潮朾㰯瀾㱢爾㱰⁡汩杮㴢汥晴∾㱳瑲潮朾駨ꢻ㨼⽳瑲潮朾㱴慢汥㸍ਠ††††††††††††††††‼瑲㸍ਠ†††††††††††††††††‼瑤㻢鞏㰯瑤㸍ਠ†††††††††††††††††‼瑤㻦ꂹ髤뢻뿤뢊苨ꚏ蟧견臥薫䇧ꮠ諥뢂蓧钟ꧧꞑ胥薬룯벌뛥邍뇧떐뻦鲉豂跥궗ꗤ붜駨궘舼⽴搾ഊ†††††††††††††††††㰯瑲㸍ਠ††††††††††††††††‼瑲㸍ਠ†††††††††††††††††‼瑤㻢鞏㰯瑤㸍ਠ†††††††††††††††††‼瑤㻥薷跥邌闧ꖨ諦麶诧骄볨ꆌ뫯벌뛥邍뇧떐뻦鲉豗跥궗ꗤ붜駨궘舼⽴搾ഊ†††††††††††††††††㰯瑲㸍ਠ†††††††††††††††‼⽴慢汥㸍ਠ††††††††††††††‼⽰㸍ਠ†††††††††††††‼⽤楶㸼⽳灡渾㰯瑤㸍ਠ††††††††††‼⽴爾ഊ†††††††††††㱴爾ഊ††††††††††††㱴搠捯汓灡渽∲∾㱳灡渠楤㴢印慮ㄢ⁣污獳㴢灭楮束扬慣欱㑢∾㱤楶⁳瑹汥㴢摩獰污示楮汩湥∾㰯摩瘾㰯獰慮㸼⽴搾ഊ†††††††††††㰯瑲㸍ਠ††††††††††‼呒㸍ਠ†††††††††††‼呄⁣潬印慮㴢㈢㸼獰慮⁣污獳㴢灭楮朱㈢㸼獴牯湧㸼扲㸼扲㸼瀾돨ꮋ裦鲬諨膆諥뺌蟦隙蘼⽰㸼⽳瑲潮朾㰯獰慮㸼⽔䐾ഊ†††††††††††㰯呒㸍ਠ††††††††††‼瑲㸍ਠ†††††††††††‼瑤⁣潬印慮㴢㈢㸍ਠ††††††††††††‼瑡扬攠獴祬攽≷楤瑨㨶〰灸∠捬慳猽≴慢汥彧牥祟扯牤敲猭牴敔慢汥ⵂ汵敔慢汥彃䡉∠獵浭慲礽∢⁷楤瑨㴢㘰〢㸍ਠ†††††††††††††‼瑢潤社ഊ†††††††††††††††㱴爾ഊ††††††††††††††††㱴搠睩摴栽∵〢㸼業朠獲挽∯業慧支獰慣敲⹧楦∠睩摴栽∵〢⁨敩杨琽∵∾㰯瑤㸍ਠ†††††††††††††††‼瑤⁷楤瑨㴢㠰∾들뮽㰯瑤㸍ਠ†††††††††††††††‼瑤⁷楤瑨㴢㐷〢㸼愠桲敦㴢卅䡋奥慲㈰ㄳ彣⹨瑭∾㈰ㄳ㰯愾♮扳瀻♮扳瀻㱡⁨牥昽≓䕈䭙敡爲〱㑟挮桴洢㸲〱㐼⽡㸦湢獰㬦湢獰㬼愠桲敦㴢卅䡋奥慲㈰ㄵ彣⹨瑭∾㈰ㄵ㰯愾♮扳瀻♮扳瀻㱡⁨牥昽≓䕈䭙敡爲〱㙟挮桴洢㸲〱㘼⽡㸦湢獰㬦湢獰㬼愠桲敦㴢卅䡋奥慲㈰ㄷ彣⹨瑭∾㈰ㄷ㰯愾♮扳瀻♮扳瀻㱡⁨牥昽≓䕈䭙敡爲〱㡟挮桴洢㸲〱㠼⽡㸦湢獰㬦湢獰㬼⽴搾ഊ†††††††††††††††㰯瑲㸍ਠ††††††††††††††‼瑲㸍ਠ†††††††††††††††‼瑤㸼⽴搾ഊ††††††††††††††††㱴搠捯汳灡渽∲∾㱡⁨牥昽≄潣畭敮瑳⽓䕈䭃潮獯汩摡瑥摉湤數彣⹸汳∠瑩瑬攽∢⁴慲来琽≟扬慮欢㻤뢋觧뚜裧뒢锼⽡㸼⽴搾ഊ†††††††††††††††㰯瑲㸍ਠ†††††††††††††‼⽴扯摹㸍ਠ††††††††††††‼⽴慢汥㸍ਠ†††††††††††‼⽴搾ഊ†††††††††††㰯瑲㸍ਠ††††††††††‼瑲㸍ਠ†††††††††††‼瑤⁣潬印慮㴢㈢㸼獰慮⁩搽≓灡渱∠捬慳猽≰浩湧彧牥礱㌵戢㸼摩瘠獴祬攽≤楳灬慹㩩湬楮攢㸼扲㸼⽤楶㸼⽳灡渾㰯瑤㸍ਠ††††††††††‼⽴爾ഊ†††††††††††㱴爾ഊ††††††††††††㱴搠捯汓灡渽∲∾㱳灡渠捬慳猽≶敲摟扬

    11 条回复    2018-12-29 14:05:24 +08:00
    leefsfd
        1
    leefsfd  
       2018-12-28 14:16:42 +08:00
    编码问题.
    liaowy
        2
    liaowy  
       2018-12-28 14:55:00 +08:00
    resp.text.encode('latin-1').decode('utf-8')
    carlclone
        3
    carlclone  
       2018-12-28 14:59:32 +08:00
    这都不知道还玩爬虫呢....
    lihongjie0209
        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()
    lanqing
        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 都行
    dfadf55
        6
    dfadf55  
       2018-12-28 16:05:21 +08:00
    @carlclone 你一开始就知道
    Ewig
        7
    Ewig  
    OP
       2018-12-28 16:40:47 +08:00
    @lanqing 你用 scrapy 试过吗?我试过打印的是空
    print(response.text.encode('latin-1').decode('utf-8')) 我这样写的
    Ewig
        8
    Ewig  
    OP
       2018-12-28 16:43:18 +08:00
    @lanqing 你是对的,我 scrapy 里面的编码没弄过,谢谢
    Ewig
        9
    Ewig  
    OP
       2018-12-29 10:50:48 +08:00
    @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,如何写才是正确的
    lihongjie0209
        10
    lihongjie0209  
       2018-12-29 11:00:21 +08:00
    @Ewig 你还是多搞搞基础吧, 没办法一步一步教你
    atencheung
        11
    atencheung  
       2018-12-29 14:05:24 +08:00
    编码的问题,我一般是这么解决的
    import requests
    response = requests.get('http://xxxxxx')
    response.encoding = "gbk2312" # 这里就是对方网站的编码格式
    print(response.text)
    这样一般就该返回的正常的,不会乱码了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1224 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:56 · PVG 01:56 · LAX 09:56 · JFK 12:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.