zoukankan      html  css  js  c++  java
  • python系列:一、Urllib库的基本使用

     

    开篇介绍:

      因为我本人也是初学者,爬虫的例子大部分都是学习资料上面来的,只是自己手敲了一遍,同时加上自己的理解。

      写得不好请多谅解,如果有错误之处请多赐教。

      我本人的开发环境是vscode,pythong为3.6版本。

      准备好了吗?我们从例子开始吧。

    1、扒一个网页下来

      

      是的,你没有看错,上面的代码就能爬百度首页,核心代码就一句:urllib.request.urlopen('http://www.baidu.com')

    2.分析扒网页的方法

      我们重点来看看这行代码:urllib.request.urlopen("http://www.baidu.com").

      调用的是urllib库里面的urlopen方法,传入一个URL,这个网址是百度首页,协议是HTTP协议,当然你也可以把HTTP换做FTP,FILE,HTTPS 等等,只是代表了一种访问控制协议,urlopen一般接受三个参数,它的参数如下:urlopen(url, data, timeout)   

        第一个参数url即为URL,第二个参数data是访问URL时要传送的数据,第三个timeout是设置超时时间。

        第二三个参数是可以不传送的,data默认为空None,timeout默认为 socket._GLOBAL_DEFAULT_TIMEOUT

        第一个参数URL是必须要传送的,在这个例子里面我们传送了百度的URL,执行urlopen方法之后,返回一个response对象,返回信息便保存在这里面。

      第二行代码:f.read()。response对象有一个read方法,可以返回获取到的网页内容。

    3、POST和GET数据传送

      上面的程序演示了最基本的网页抓取,不过,现在大多数网站都是动态网页,需要你动态地传递参数给它,它做出对应的响应。所以,在访问时,我们需要传递数据给它。  

      数据传送分为POST和GET两种方式,两种方式有什么区别呢?

      最重要的区别是GET方式是直接以链接形式访问,链接中包含了所有的参数,当然如果包含了密码的话是一种不安全的选择,不过你可以直观地看到自己提交了什么内容。POST则不会在网址上显示所有的参数,不过如果你想直接查看提交了什么就不太方便了,大家可以酌情选择。  

      POST方式:  

      

      友情提示:如果报错urllib.error.HTTPError: HTTP Error 405:    原因:请求协议问题     解决:将http 改成https试试。

      里面的json也可以写成:

        values = {}

        values['username'] = "1016903103@qq.com"
        values['password'] = "XXXX"
      

      GET方式:

      

      

    本章讲解了一些基本使用,可以抓取到一些基本的网页信息。

    源码如下:

     1 # _*_ coding:utf-8 _*_ 
     2 import urllib.request 
     3  
     4  
     5 def run_demo():
     6     f=urllib.request.urlopen('http://www.baidu.com')
     7     print(f.read()) 
     8 
     9 if __name__=='__main__':
    10     run_demo()
    11  
    12 '''
    13 # _*_ coding:utf-8 _*_ 
    14 from urllib import request
    15 from urllib import parse
    16 from urllib.request import urlopen
    17 
    18 values = {'username': 'biao1603@qq.com', 'password': 'biao1603@qq.com'}
    19 data = parse.urlencode(values).encode('utf-8')  # 提交类型不能为str,需要为byte类型
    20 url = 'http://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn'
    21 request = request.Request(url, data)
    22 response = urlopen(request)
    23 print(response.read().decode())
    24 
    25 # _*_ coding:utf-8 _*_ 
    26 from urllib import request
    27 from urllib import parse
    28 from urllib.request import urlopen
    29 
    30 values={}
    31 values['username'] = "biao1603@qq.com"
    32 values['password']="biao1603@qq.com"
    33 data = parse.urlencode(values) 
    34 url = "http://passport.csdn.net/account/login"
    35 geturl = url + "?"+data
    36 request = request.Request(geturl)
    37 response = urlopen(request)
    38 print(response.read().decode())
    39 '''
    View Code
  • 相关阅读:
    IL指令详细
    读懂IL代码就这么简单(三)完结篇
    读懂IL代码就这么简单(二)
    读懂IL代码就这么简单(一)
    在 .NET Core Logging中使用 Trace和TraceSource
    使用JWT创建安全的ASP.NET Core Web API
    闭环思维
    一行代码,百万人民币打水漂
    网络接口库函数mpr.dll动态库
    使用MSF利用永恒之蓝漏洞远程控制主机——直接使用MSF即可RCE,我++,在docker里没有完成,GG!
  • 原文地址:https://www.cnblogs.com/biao/p/11976429.html
Copyright © 2011-2022 走看看