最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Urllib库在python爬虫中如何用?

    正文概述    2020-02-18   470

    当我们想要获取一个网页内容的时候会怎么做呢?传统的做法是复制下来,但这只适合单个网页或是数量极少的需求。为了方便更多诗句的获取,我们可以用python中的知识来解决。小编经过一番对比,觉得Urllib库在获取网页方面非常适用小白们使用。毕竟它满足了抓取内容,而且数量多的条件。接下来就让我们一起学习下吧~


    一、扒取一个网页

    怎样扒网页呢?其实就是根据 URL 来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它是一段 HTML 代码,加 JS、CSS,如果把网页比作一个人,那么 HTML 便是他的骨架,JS 便是他的肌肉,CSS 便是它的衣服。所以最重要的部分是存在于 HTML 中的,下面我们就写个例子来扒一个网页下来。

    import urllib2
     
    response = urllib2.urlopen("http://www.baidu.com")
    print response.read()

    是的你没看错,真正的程序就两行,把它保存成 demo.py,进入该文件的目录,执行如下命令

    python demo.py

    二、构造 Request

    其实上面的 urlopen 参数可以传入一个 request 请求,它其实就是一个 Request 类的实例,构造时需要传入 Url,Data 等等的内容。比如上面的两行代码,我们可以这么改写

    import urllib2
     
    request = urllib2.Request("http://www.baidu.com")
    response = urllib2.urlopen(request)
    print response.read()

    运行结果是完全一样的,只不过中间多了一个 request 对象,推荐大家这么写,因为在构建请求时还需要加入好多内容,通过构建一个 request,服务器响应请求得到应答,这样显得逻辑上清晰明确。

     

    三、POST 和 GET 数据传送

    1. POST 方式:

    上面我们说了 data 参数是干嘛的?对了,它就是用在这里的,我们传送的数据就是这个参数 data,下面演示一下 POST 方式。

    import urllib
    import urllib2
     
    values = {"username":"1016903103@qq.com","password":"XXXX"}
    data = urllib.urlencode(values)
    url = "https://img.wangzhan5u.com/images/10/urllilogin
    request = urllib2.Request(url,data)
    response = urllib2.urlopen(request)
    print response.read()

    我们引入了 urllib 库,现在我们模拟登陆 CSDN,当然上述代码可能登陆不进去,因为 CSDN 还有个流水号的字段,没有设置全,比较复杂在这里就不写上去了,在此只是说明登录的原理。一般的登录网站一般是这种写法。 我们需要定义一个字典,名字为 values,参数我设置了 username 和 password,下面利用 urllib 的 urlencode 方法将字典编码,命名为 data,构建 request 时传入两个参数,url 和 data,运行程序,返回的便是 POST 后呈现的页面内容。 注意上面字典的定义方式还有一种,下面的写法是等价的

    import urllib
    import urllib2
     
    values = {}
    values['username'] = "1016903103@qq.com"
    values['password'] = "XXXX"
    data = urllib.urlencode(values)
    url = "https://img.wangzhan5u.com/images/10/urllilogin
    request = urllib2.Request(url,data)
    response = urllib2.urlopen(request)
    print response.read()


    2. GET 方式:

    至于 GET 方式我们可以直接把参数写到网址上面,直接构建一个带参数的 URL 出来即可。

    import urllib
    import urllib2
     
    values={}
    values['username'] = "1016903103@qq.com"
    values['password']="XXXX"
    data = urllib.urlencode(values)
    url = "http://passport.csdn.net/account/login"
    geturl = url + "?"+data
    request = urllib2.Request(geturl)
    response = urllib2.urlopen(request)
    print response.read()

    你可以 print geturl,打印输出一下 url,发现其实就是原来的 url 加?然后加编码后的参数

    https://img.wangzhan5u.com/images/10/urllilogin style="font-size: 14px; font-family: 微软雅黑, "Microsoft YaHei";">

    以上就是python爬虫Urllib库的详解。有些小伙伴会在数据传送上纠结post好还是get好?小编个人感觉get要轻松容易一下,这里着重推荐使用一下。当然想要进阶python的朋友,可以试着挑战post。更多Python学习推荐:起源地模板网教学中心


    下载网 » Urllib库在python爬虫中如何用?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元