鱼C论坛

 找回密码
 立即注册
查看: 1744|回复: 10

[已解决]和书里一样的爬虫代码,出来结果不同啊

[复制链接]
发表于 2017-4-9 17:01:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. import urllib.request as r
  2. import json
  3. import urllib.parse


  4. content=input('请输入:')
  5. url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=https://www.baidu.com/'
  6. data = {}
  7. data['type']:'AUTO'
  8. data['i']:content
  9. data['doctype']:'json'
  10. data['xmlVersion']:'1.8'
  11. data['keyfrom']:'fanyi.web'
  12. data['ue']:'UTF-8'
  13. data['action']:'FY_BY_CLICKBUTTON'
  14. data['typoResult']:'true'
  15. data = urllib.parse.urlencode(data).encode('utf-8')

  16. res = r.urlopen(url,data)
  17. html=res.read().decode('utf-8')
  18. print(html)
复制代码


这是有道翻译,照搬书里的,但是结果不是preview里的内容,数据如下,新手帖,很多不懂,勿怪


<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

   



    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>在线翻译_有道</title>
    <meta name="keywords" content="在线翻译"/>
    <meta name="description" content="有道翻译提供即时免费的中、英、日、韩、法、俄、西班牙、葡萄牙文全文翻译、网页翻译服务。"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.4, minimum-scale=1.0, maximum-scale=2.0"/>
    <link rel="canonical" />
    <link  title="有道翻译" type="application/opensearchdescription+xml" rel="search"/>
    <link rel="shortcut icon"  type="image/x-icon" />


    <link  rel="stylesheet" type="text/css" />
    <link  rel="stylesheet" type="text/css" />
</head>
<body class="open result-default">

   
<div class="c-header c-header-ext">
    <a class="c-logo" >有道 - 网易旗下搜索</a>
    <h1 class="yd-fy-desp">免费、即时的多语种在线翻译</h1>
        <div class="user-info">
        <div class="c-sust">
                            <a >登录</a>
                </div>
            </div>
    </div>
<div id="w" class="cf">

<div id="transBackground">

    <div id="main" class="cf">

        <div id="transBtnTip">

            <div id="transBtnTipInner">

                点击翻译按钮继续,查看网页翻译结果。

                <p class="ar">

                    <a href="#" id="transBtnTipOK">我知道了</a>

                </p>

                <b id="transBtnTipArrow"></b>

            </div>

        </div>

        <div id="inputMod" class="column fl">

            <div class="wrapper">

                <form action="" method="post" id="transForm" name="transForm">



                    <div class="clearall">

                        <div id="clearInput" class="clog-js">

                            <div class="clearnotice">清空内容</div>

                        </div>

                    </div>

                    <div class="row border content" id="inputContent">

                        <textarea id="inputText" class="text" dir="ltr" tabindex="1" wrap="SOFT" name="i" placeholder="请输入要翻译的文字,输入网址可翻译该网页内容"></textarea>

                        <div class="typo-suggest">您是不是要翻译: <a class="spell-corrected" href="#"></a></div>

                    </div>

                    <div class="row">

                        <div id="customSelectBtn" class="normalbtn" data-selected="AUTO">

                            <span class="btn_text">自动检测语言</span>

                            <span id="outputLang"></span>

                            <b class="btn_arrow"></b>

                            <ul id="customSelectOption">

                                <li class="on"><a val="AUTO" href="#">自动检测语言</a></li>

                                <li><a val="ZH_CN2EN" href="#">中文 &#187; 英语</a></li>

                                <li><a val="ZH_CN2JA" href="#">中文 &#187; 日语</a></li>

                                <li><a val="ZH_CN2KR" href="#">中文 &#187; 韩语</a></li>

                                <li><a val="ZH_CN2FR" href="#">中文 &#187; 法语</a></li>

                                <li><a val="ZH_CN2RU" href="#">中文 &#187; 俄语</a></li>

                                <li><a val="ZH_CN2SP" href="#">中文 &#187; 西语</a></li>

                                <li><a val="ZH_CN2PT" href="#">中文 &#187; 葡语</a></li>

                                <li><a val="EN2ZH_CN" href="#">英语 &#187; 中文</a></li>

                                <li><a val="JA2ZH_CN" href="#">日语 &#187; 中文</a></li>

                                <li><a val="KR2ZH_CN" href="#">韩语 &#187; 中文</a></li>

                                <li><a val="FR2ZH_CN" href="#">法语 &#187; 中文</a></li>

                                <li><a val="RU2ZH_CN" href="#">俄语 &#187; 中文</a></li>

                                <li><a val="SP2ZH_CN" href="#">西语 &#187; 中文</a></li>

                                <li><a val="PT2ZH_CN" href="#">葡语 &#187; 中文</a></li>



                            </ul>

                            <input type="hidden" value="AUTO" name="type" id="customSelectVal">

                        </div>

                        <a type="submit" id="translateBtn" href="#"

                           title="Enter自动提交" value="自动翻译" name="action" class="button translateBtn"></a>

                        <a type="button" id="atBtn" href="#"

                           title="" value="人工翻译" name="forward" class="button atNormalBtn"></a>

                        <a id="atLink" data-pos="web.i.bottom" class="clog-js" data-clog="ATBUTTON_CLICK" href="#"></a>

                    </div>



                    <div id="atBtnhover">

                        <div class="arrow">

                         <em></em><span></span>

                        </div>

                        <p class="clog-notice">专业译员随时待命,<br/>

                        <span class="time-num"></span>

                        返回精准译文<br/>

                        <span class="polish-publish">【母语润色服务,全新上线】</span>

                        </p>

                    </div>

                    <!-- end of translate_pro suggest -->

                </form>

            </div>

            <!-- end of wrapper -->

        </div>

        <!-- end of div inputMod -->

        <div id="outputMod" class="column fr">

            <div class="wrapper">

                <!-- end of entryList -->

                <div class="row-hidden" id="outputHidden"></div>

                <div id="translated">



                    <div class="row">

                        <div class="row" id="outputText"></div>

                    </div>

                    <div id="modeWrapper" class="read-mode">



                            <a class="open-reading-mode title" href="#" title="" hidefocus></a>

                            <a class="close-reading-mode title" href="#" title="" hidefocus></a>

                            <div class="opennotice">

                                <div class="arrow">

                                    <em></em><span></span>

                                </div>

                                全屏阅读

                            </div>

                            <div class="closenotice">

                                <div class="arrow">

                                    <em></em><span></span>

                                </div>

                                关闭全屏阅读

                            </div>

                        </div>



                    <div class="row desc">

                        

                        <div id="selectorSwitcher" class="selector-sprite" style="display:none;">

                            <span id="selectorStatus">划词</span>

                        </div>



                        <div class="read-mode" id="compareMode">

                            <label class="compare-mode compare-disable" for="compare">

                                <input id="compare" name="compare" class="clog-js" type="checkbox"

                                       data-clog="COMPARE_CLICK" data-pos="web.o.righttop" />

                                       <span class="compare-message">双语对照</span>

                            </label>



                        </div>



                        <div class="tool">

                        <a href="#" id="speech" title=""></a>

                        <a href="#" id="resultScore"></a>

                        <div class="speechnotice">

                            <div class="arrow">

                             <em></em><span></span>

                            </div>

                            朗读

                        </div>

                        <div class="copynotice">

                            <div class="arrow">

                             <em></em><span></span>

                            </div>

                            <span class="copy-notice">复制</span>

                        </div>

                        <a class="actions copyIt-js">

                            <span id="copyOutput" class="copy-init"></span>

                        </a>

                        </div>

                    </div>





                </div>

                <!-- end translated -->

            </div>

            <!-- end of wrapper -->

            <div class="row cf" id="addons">

            <div class="scorearrow">

                 <em></em><span></span>

            </div>

                <div id="star">

                    <p class="star_show">翻译结果评分:</p>

                    <p class="star_result">你的评分:</p>

                    <p id="rating">

                        <a href="#" class="rank rank_1" title="1分" data-score="1" hidefocus="true"></a><a

                            href="#" class="rank rank_2" title="2分" data-score="2" hidefocus="true"></a><a

                            href="#" class="rank rank_3" title="3分" data-score="3" hidefocus="true"></a><a

                            href="#" class="rank rank_4" title="4分" data-score="4" hidefocus="true"></a><a

                            href="#" class="rank rank_5" title="5分" data-score="5" hidefocus="true"></a>

                        <input id="rating_score" type="hidden" name="score" value=""/>

                    </p>

                    <span id="rating_1" class="rating_1"></span>

                </div>

                <!-- <span id="suggestYou">TODO

                </span> -->

            </div>

            <div class="suggest">

            <div id="suggestYou"><!-- TODO -->

            </div>

            </div>

        </div>

        <!-- end of div outputMod -->

        <div id="errorHolder"><span class="error_text"></span></div>



   

    </div>

    <!-- end of main -->

    </div>

    <div class="sponsor-content">

    <div id="sponsor" class="cf">

    <div class="more-services-list">
        <table id="trans_tools" class="cf" cellpadding="0" cellspacing="0">
            <tr>
                <td>
                    <h3 class="h2-sponsor">
                           <div class="icon2">
                           <a data-pos="web.moretool" class="clog-js" data-clog="MDICT_CLICK" title="有道翻译官"
                            target="_blank">
                               <p class="icon-notice1"><span>有道</span>翻译官</p>
                               <p class="icon-notice2">52种语言的随身翻译,支持语音翻译及拍照翻译~</p>
                               <span class="icon-png2"></span>
                               </a>
                           </div>
                    </h3>
                    <div class="vertical"></div>
                </td>
                <td>
                    <h3 class="h1-sponsor">
                           <div class="icon1">
                           <a id="fufeiLink" data-pos="web.moretool" class="clog-js" data-clog="FUFEI_CLICK" title="有道专业翻译"
                            target="_blank">
                               <p class="icon-notice1"><span>有道</span>人工翻译 / <span class="polish">母语润色</span></p>
                               <p class="icon-notice2">全球最优秀的译员时刻待命,专业、精准、地道!</p>
                               <span class="icon-png1"></span>
                               </a>
                           </div>
                    </h3>
                    <div class="second-vertical vertical"></div>
                </td>
                <td class="last-cell">
                    <h3 class="h3-sponsor">
                           <div class="icon3">
                           <a id="appWebsite" data-pos="web.moretool" data-pos="web.moretool" class="clog-js" data-clog="DOWNLOAD_CLICK" title="有道词典 桌面版"
                            target="_blank">
                               <p class="icon-notice1" id="downloadApp"><span>有道</span>词典 桌面版</p>
                               <p class="icon-notice2">支持全文翻译,智能调整语序,支持屏幕取词,快来点击下载~</p>
                               </a>
                           </div>
                           <a data-pos="web.moretool"  class="dict-client clog-js" id="dictClient" data-clog="DOWNLOAD_CLIENT" title="有道词典 桌面版" target="_blank"></a>
                           <div class="dict-notice">
                                <div class="arrow">
                                    <em></em><span></span>
                                </div>
                           下载有道词典
                           </div>
                    </h3>
                    <div class="vertical"></div>
                </td>
            </tr>
        </table>
        <!-- 右侧悬浮窗 -->

<div class="suspend">

    <div class="qrCode"></div>

    <div class="qrcodeHover">

        <div class="codearrow">

        <em></em><span></span>

        </div>

        <p>

            扫描二维码<br>

            关注有道人工翻译

        </p>

    </div>

    <a class="clog-js" data-clog="SURVEY_CLICK" data-pos="web.index.bottom" target="_blank"  ><div id="research"></div></a>

</div>

<!-- end of suspend -->    </div>
    <!--广告-->
    <div id="advertisement"></div>
    <div id="advertText" style="margin-top:5px;"></div>
</div><!-- end of div sponsor -->
    </div>





</div>

<!-- end of w -->

<!-- map form for at btn -->

<form id="mapForm" target="_blank" method="POST" action="http://f.youdao.com/?path=fanyi&vendor=fanyiinput"></form>

<div id="YOUDAO_SELECTOR_WRAPPER" bindTo="inputText:outputText"

     style="display:none; z-index: 101; margin:0; border:0; padding:0; width:320px; height:240px;"></div>



<script type="text/javascript"

        src="http://fanyi.youdao.com/openapi.do?keyfrom=fanyiweb&type=selector&version=1.2&select=off&translate=on"

        charset="utf-8"></script>



   

<div id="c_footer">
  <a href="about.html">关于有道翻译</a><span class="c_fnl">|</span><a >有道翻译API</a><span class="c_fnl">|</span><a >有道首页</a><span class="c_fnl">|</span><a >有道智选</a><span class="c_fnl">|</span><a >关于有道</a><span class="c_fnl">|</span><a >官方博客</a>
  <p class="c_fcopyright">&copy; 2017 网易公司 京ICP证080268号</p>
</div>

<script type="text/javascript">
    var global = {};



    var abtest = "0";
    global.abTest = "0";
    global.sessionFrom = "null";
</script>

<script type="text/javascript" src="http://shared.ydstatic.com/ead/js/dict_req_web_1.1.js"></script>
<script data-main="/fanyi" type="text/javascript" src="http://shared.ydstatic.com/fanyi/v3.2/scripts/fanyi.js"></script>

<div id="custheme"> </div>
<!-- START NetEase Devilfish 2006 -->
<script src="http://analytics.163.com/ntes.js" type="text/javascript"></script>
<script type="text/javascript">
  _ntes_nacc = "ydfanyiweb";
  neteaseTracker();
</script>
<!-- END NetEase Devilfish 2006 -->
<!-- START rlog -->
<script type="text/javascript">
  __rl_npid = "fanyiweb";
  (function() {
    var _rl = document.createElement('script');
    _rl.type = 'text/javascript'; _rl.async = true;
    _rl.src = 'http://rlogs.youdao.com/rlog.js';
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(_rl, s);
  })();
</script>
<!-- END rlog -->
<!-- 判断平台进行下载客户端 -->
<script type="text/javascript">
    (function (){
        var av = navigator.appVersion.toLowerCase() || '';
        var is = {};
        var dictClientEle = document.getElementById('dictClient');
        var downloadApp = document.getElementById('downloadApp');
        var appWebsite = document.getElementById('appWebsite');
        var href = dictClientEle.href;
        is.mac = /mac/i.test(av);
        is.win = /win/i.test(av);
        is.ipad = /ipad/i.test(av);
        is.linux = /linux/i.test(av);
        is.iphone = /iphone/i.test(av);
        is.android = /android/i.test(av);
        if (is.win) {
            href = "http://codown.youdao.com/cidian/YoudaoDict_youdao.fanyiindex.exe";
        } else if (is.mac) {
            if (is.iphone) {
                href = "https://itunes.apple.com/cn/app/id353115739?mt=8";
            } else if (is.ipad) {
                href = "https://itunes.apple.com/cn/app/id388358640?mt=8";
            } else {
                appWebsite.href = "http://cidian.youdao.com/index-mac.html?vendor=fanyiweb";
                downloadApp.innerHTML = "<span>有道</span>词典 Mac版";
                href = "http://codown.youdao.com/cidian/download/MacDict_fanyiindex.dmg";
            }
        } else if (is.linux) {
            href = "http://cidian.youdao.com/index-linux.html?vendor=fanyiweb";
        } else if (is.android) {
            href = "http://codown.youdao.com/dictmobile/youdaodict_android_youdaoweb.apk";
        }
        dictClientEle.href = href;
    })();
</script>
<!-- end -->




</body>

</html>




最佳答案
2017-4-9 17:06:36
附上直接给中文的,
  1. import urllib.parse
  2. import urllib.request
  3. import json

  4. content = input('请输入需要翻译的内容:')

  5. url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=http://www.so.com/link'
  6. data = {}
  7. data['type'] = 'AUTO'
  8. data['i'] = content
  9. data['doctype'] = 'json'
  10. data['xmlVersion'] = '1.8'
  11. data['keyfrom'] = 'fanyi.web'
  12. data['ue'] = 'UTF-8'
  13. data['action'] = 'FY_BY_CLICKBUTTON'
  14. data['typoResult'] = 'true'
  15. data = urllib.parse.urlencode(data).encode('utf-8')

  16. response = urllib.request.urlopen(url,data)
  17. html = response.read().decode('utf-8')

  18. target = json.loads(html)
  19. print('翻译结果:%s' % (target['translateResult'][0][0]['tgt']))

复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-4-9 17:02:09 | 显示全部楼层
正确的内容应该是                                                                                                                                              {"type":"ZH_CN2EN","errorCode":0,"elapsedTime":1,"translateResult":[[{"src":"我爱你","tgt":"I love you"}]],"smartResult":{"type":1,"entries":["","I love you"]}}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-9 17:04:17 | 显示全部楼层
你就是想做一个爬虫,有道翻译对吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-9 17:06:13 | 显示全部楼层
  1. import urllib.request as r
  2. import json
  3. import urllib.parse


  4. content=input('请输入:')
  5. url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=https://www.baidu.com/'
  6. data = {}
  7. data['type']:'AUTO'
  8. data['i']:content
  9. data['doctype']:'json'
  10. data['xmlVersion']:'1.8'
  11. data['keyfrom']:'fanyi.web'
  12. data['ue']:'UTF-8'
  13. data['action']:'FY_BY_CLICKBUTTON'
  14. data['typoResult']:'true'
  15. data = urllib.parse.urlencode(data).encode('utf-8')

  16. res = r.urlopen(url,data)
  17. html=res.read().decode('utf-8')
  18. target = json.loads(html)

  19. print(target)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-9 17:06:36 | 显示全部楼层    本楼为最佳答案   
附上直接给中文的,
  1. import urllib.parse
  2. import urllib.request
  3. import json

  4. content = input('请输入需要翻译的内容:')

  5. url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=http://www.so.com/link'
  6. data = {}
  7. data['type'] = 'AUTO'
  8. data['i'] = content
  9. data['doctype'] = 'json'
  10. data['xmlVersion'] = '1.8'
  11. data['keyfrom'] = 'fanyi.web'
  12. data['ue'] = 'UTF-8'
  13. data['action'] = 'FY_BY_CLICKBUTTON'
  14. data['typoResult'] = 'true'
  15. data = urllib.parse.urlencode(data).encode('utf-8')

  16. response = urllib.request.urlopen(url,data)
  17. html = response.read().decode('utf-8')

  18. target = json.loads(html)
  19. print('翻译结果:%s' % (target['translateResult'][0][0]['tgt']))

复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-9 17:11:27 | 显示全部楼层
新手·ing 发表于 2017-4-9 17:06
附上直接给中文的,

谢谢大牛了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-9 17:13:39 | 显示全部楼层

小甲鱼后来带着做过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-9 17:15:56 | 显示全部楼层
大牛帮忙看看这是啥,我一用json.loads()就出这个

Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\000.py", line 22, in <module>
    target=json.loads(html)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\json\__init__.py", line 354, in loads
    return _default_decoder.decode(s)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\json\decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\json\decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-9 17:19:59 | 显示全部楼层
新手·ing 发表于 2017-4-9 17:13
小甲鱼后来带着做过

...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-9 17:27:07 | 显示全部楼层
好吧。我智障了,真的智障了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-9 19:21:11 | 显示全部楼层
老甲鱼与小甲鱼 发表于 2017-4-9 17:27
好吧。我智障了,真的智障了

你智障了,你真的智障了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-24 00:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表