美文网首页
第五十三课:论一只爬虫的自我修养:入门

第五十三课:论一只爬虫的自我修养:入门

作者: 无罪的坏人 | 来源:发表于2018-08-28 10:54 被阅读0次

    内容来源于网络,本人只是在此稍作整理,如有涉及版权问题,归小甲鱼官方所有。

    练习题(来自小甲鱼官方论坛)

    0.请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!

    • URL由三部分组成
      1️⃣协议(不可缺少)
      2️⃣存放资源的服务器的域名系统(DNS)主机名或IP地址(有时候需要端口号)(不可缺少)
      3️⃣主机资源的具体地址,如目录或文件名等(可以省略)
    • urllib模块
      Python2中urllib还分urllib和urllib2,到了Python3就只有urllib模块,这其实也不是一个模块,它是一个包(package)。


      urllib模块.png

      总共有4个模块,第一个模块是最重要的模块,它包含了对服务器请求的发出、跳转、代理和安全等各个方面。

    >>> import ssl
    >>> import urllib.request
    >>> context = ssl._create_unverified_context()
    >>> response = urllib.request.urlopen("http://www.fishc.com", context=context)
    >>> html = response.read()
    >>> print(html)
    b'<!DOCTYPE html>\n<html lang="en">\n<head>\n    <meta charset="UTF-8">\n    <meta name="viewport" content="width=device-width, initial-scale=1.0">\n    <meta name="keywords" content="\xe9\xb1\xbcC\xe5\xb7\xa5\xe4\xbd\x9c\xe5\xae\xa4|\xe5\x85\x8d\xe8\xb4\xb9\xe7\xbc\x96\xe7\xa8\x8b\xe8\xa7\x86\xe9\xa2\x91\xe6\x95\x99\xe5\xad\xa6|Python\xe6\x95\x99\xe5\xad\xa6|Web\xe5\xbc\x80\xe5\x8f\x91\xe6\x95\x99\xe5\xad\xa6|\xe5\x85\xa8\xe6\xa0\x88\xe5\xbc\x80\xe5\x8f\x91\xe6\x95\x99\xe5\xad\xa6|C\xe8\xaf\xad\xe8\xa8\x80\xe6\x95\x99\xe5\xad\xa6|\xe6\xb1\x87\xe7\xbc\x96\xe6\x95\x99\xe5\xad\xa6|Win32\xe5\xbc\x80\xe5\x8f\x91|\xe5\x8a\xa0\xe5\xaf\x86\xe4\xb8\x8e\xe8\xa7\xa3\xe5\xaf\x86|Linux\xe6\x95\x99\xe5\xad\xa6">\n    <meta name="description" content="\xe9\xb1\xbcC\xe5\xb7\xa5\xe4\xbd\x9c\xe5\xae\xa4\xe4\xb8\xba\xe5\xa4\xa7\xe5\xae\xb6\xe6\x8f\x90\xe4\xbe\x9b\xe6\x9c\x80\xe6\x9c\x89\xe8\xb6\xa3\xe7\x9a\x84\xe7\xbc\x96\xe7\xa8\x8b\xe8\xa7\x86\xe9\xa2\x91\xe6\x95\x99\xe5\xad\xa6\xe3\x80\x82">\n    <meta name="author" content="\xe9\xb1\xbcC\xe5\xb7\xa5\xe4\xbd\x9c\xe5\xae\xa4">\n    <title>\xe9\xb1\xbcC\xe5\xb7\xa5\xe4\xbd\x9c\xe5\xae\xa4-\xe5\x85\x8d\xe8\xb4\xb9\xe7\xbc\x96\xe7\xa8\x8b\xe8\xa7\x86\xe9\xa2\x91\xe6\x95\x99\xe5\xad\xa6|Python\xe6\x95\x99\xe5\xad\xa6|Web\xe5\xbc\x80\xe5\x8f\x91\xe6\x95\x99\xe5\xad\xa6|\xe5\x85\xa8\xe6\xa0\x88\xe5\xbc\x80\xe5\x8f\x91\xe6\x95\x99\xe5\xad\xa6|C\xe8\xaf\xad\xe8\xa8\x80\xe6\x95\x99\xe5\xad\xa6|\xe6\xb1\x87\xe7\xbc\x96\xe6\x95\x99\xe5\xad\xa6|Win32\xe5\xbc\x80\xe5\x8f\x91|\xe5\x8a\xa0\xe5\xaf\x86\xe4\xb8\x8e\xe8\xa7\xa3\xe5\xaf\x86|Linux\xe6\x95\x99\xe5\xad\xa6</title>\n    <link rel="shortcut icon" type="image/x-icon" href="img/favicon.ico">\n    <link rel="stylesheet" href="css/styles.css">\n    <script src="js/jq.js"></script>\n    <script src="https://cdn.bootcss.com/timelinejs/2.36.0/js/storyjs-embed.js"></script>\n    <script>\n        $(document).ready(function() {\n            var windowHeight = document.documentElement.clientHeight || document.body.clientHeight;\n\n            createStoryJS({\n                type:       \'timeline\',\n                width:      \'auto\',\n                height:     windowHeight,\n                source:     \'data.json\',\n                start_at_end:true,                          //OPTIONAL START AT LATEST DATE\n                embed_id:   \'my-timeline\'\n            });\n\n        });\n    </script>\n    <!-- END TimelineJS -->\n</head>\n<body>\n<div id="my-timeline"></div>\n</body>\n</html>'
    >>> html = html.decode("utf-8")  # 解码
    >>> print(html)
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta name="keywords" content="鱼C工作室|免费编程视频教学|Python教学|Web开发教学|全栈开发教学|C语言教学|汇编教学|Win32开发|加密与解密|Linux教学">
        <meta name="description" content="鱼C工作室为大家提供最有趣的编程视频教学。">
        <meta name="author" content="鱼C工作室">
        <title>鱼C工作室-免费编程视频教学|Python教学|Web开发教学|全栈开发教学|C语言教学|汇编教学|Win32开发|加密与解密|Linux教学</title>
        <link rel="shortcut icon" type="image/x-icon" href="img/favicon.ico">
        <link rel="stylesheet" href="css/styles.css">
        <script src="js/jq.js"></script>
        <script src="https://cdn.bootcss.com/timelinejs/2.36.0/js/storyjs-embed.js"></script>
        <script>
            $(document).ready(function() {
                var windowHeight = document.documentElement.clientHeight || document.body.clientHeight;
    
                createStoryJS({
                    type:       'timeline',
                    width:      'auto',
                    height:     windowHeight,
                    source:     'data.json',
                    start_at_end:true,                          //OPTIONAL START AT LATEST DATE
                    embed_id:   'my-timeline'
                });
    
            });
        </script>
        <!-- END TimelineJS -->
    </head>
    <body>
    <div id="my-timeline"></div>
    </body>
    </html>
    

    我们要对拿到的字节对象进行解码,把他变成Unicode编码,这样我们才能看懂。
    备注:目前鱼C已经是https,所以无法用书上的内容爬取。修改方式参考如下链接:https://blog.csdn.net/xiaopangxia/article/details/49908889

    • 编码

    相关文章

      网友评论

          本文标题:第五十三课:论一只爬虫的自我修养:入门

          本文链接:https://www.haomeiwen.com/subject/xsjfmftx.html