zoukankan      html  css  js  c++  java
  • Python爬取一个简单网页的HTML代码

    这几天我初学Python的urllib库,学学Python网络爬虫知识,结果学起来比我想象的难得多,比学习界面都难。


    urllib是什么?

    我们首先了解一下 Urllib 库,它是 Python 内置的 HTTP 请求库,也就是说我们不需要额外安装即可使用,它包含四个模块:
    • 第一个模块 request,它是最基本的 HTTP 请求模块,我们可以用它来模拟发送一请求,就像在浏览器里输入网址然后敲击回车一样,只需要给库方法传入 URL 还有额外的参数,就可以模拟实现这个过程了。
    • 第二个 error 模块即异常处理模块,如果出现请求错误,我们可以捕获这些异常,然后进行重试或其他操作保证程序不会意外终止。
    • 第三个 parse 模块是一个工具模块,提供了许多 URL 处理方法,比如拆分、解析、合并等等的方法。
      第四个模块是 robotparser,主要是用来识别网站的 robots.txt 文件,然后判断哪些网站可以爬,哪些网站不可以爬的,其实用的比较少。

    在这里重点对前三个模块进行下讲解。

    作者:NewForMe
    链接:https://www.jianshu.com/p/63dad93d7000
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


    现在我来说一个怎么使用urllib库爬取一个网页的HTML代码,可以输出,也可以保存进一个文件

    urllib.request 模块提供了最基本的构造 HTTP 请求的方法,利用它可以模拟浏览器的一个请求发起过程,同时它还带有处理authenticaton(授权验证),redirections(重定向),cookies(浏览器Cookies)以及其它内容。

    我们来感受一下它的强大之处,以 Python官网为例,我们来把这个网页抓下来:

    import urllib.request
    
    response = urllib.request.urlopen('https://www.python.org')
    print(response.read().decode('utf-8'))
    

    运行结果

    这是一个截图,实际上很多行都输出在了IDLE上(我直接用的解释器)

    接下来我们看下它返回的到底是什么,利用 type() 方法输出 Response 的类型。

    import urllib.request
    
    response = urllib.request.urlopen('https://www.python.org')
    print(type(response))
    

    输出结果:

    <class 'http.client.HTTPResponse'>

    通过输出结果可以发现它是一个 HTTPResposne 类型的对象,它主要包含的方法有 read()、readinto()、getheader(name)、getheaders()、fileno() 等方法和 msg、version、status、reason、debuglevel、closed 等属性。
    得到这个对象之后,我们把它赋值为 response 变量,然后就可以调用这些方法和属性,得到返回结果的一系列信息了。

    例如调用 read() 方法可以得到返回的网页内容,调用 status 属性就可以得到返回结果的状态码,如 200 代表请求成功,404 代表网页未找到等。

  • 相关阅读:
    URL域名获取
    SQL Server 索引结构及其使用(二)
    SQL Server 索引结构及其使用(一)[转]
    查询数据库中所有表的数据量、有效数据量以及其它定制数据量
    转:Servlet的url匹配以及url-pattern详解
    转:在MyEclipse下创建Java Web项目 入门(图文并茂)经典教程
    MyEclipse +Servlet 乱码
    MyEclipse +Tomcat 异常操作
    Android Include标签
    转ATL对象类型
  • 原文地址:https://www.cnblogs.com/coding365/p/12944305.html
Copyright © 2011-2022 走看看