分享

爬虫真的非常简单,一篇文章搞定(零基础都可以学会)

 springkaixin 2017-08-08

urllib是基于http的高层库,它有以下三个主要功能:

(1)request处理客户端的请求

(2)response处理服务端的响应

(3)parse会解析url

一、爬取网页内容

我们知道,网页上呈现的优美页面,本质都是一段段的HTML代码,加上JS 、CSS等,本人也是刚开始学python,这个文章也比较小白,资深老鸟请忽略~~。

本文所说的代码都是基于python3的,使用phython2的请注意

python 3.x中urllib库和urilib2库合并成了urllib库

其中urllib2.urlopen()变成了urllib.request.urlopen()

urllib2.Request()变成了urllib.request.Request()

那么获取网页有哪一些方法呢?这里列举了三种方法,具体查看代码。

import urllib.requestimport http.cookiejarurl = 'http://www.baidu.com'#直接通过url来获取网页数据print('第一种 :直接通过url来获取网页数据')response = urllib.request.urlopen(url)html = response.read()

将上面的代码copy之后,在pycharm新建一个python项目,如下图,新建一个python file ,命名为demo.py 黏贴上面的代码

右键运行改文件,我们就可以从控制台获取到整个网页内容了

或者打开pycharm的terminal窗口,输入

python demo.py

copy上面网页内容,然后黏贴到下面的在线HTML 运行工具

http://www./tools/web/web_run.html

运行之后我们可以看到下图网址部分是本地的,对比网页的百度,发现底部的那些网页新闻不见了,因为我们抓取的是静态网页呀,动态网页需要的一些参数,要如何传递给他,下面有简单的解释。利用这个我们也可以只抓取我们需要的静态网页,相当于做了一些去广告之类的。。。。。

从代码看出,上面使用的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对象,返回信息便保存在这里面。

response.read()

response对象有一个read方法,可以返回获取到的网页内容,我们可以的到一个HTML格式的文档。

二、构造Request

其实上面的urlopen参数也可以传入一个Request类的实例,我们构造request时需要传入Url,Data等等的内容。

import urllib.request req = urllib.request.Request('http:///')

三、发送数据

数据传送最基本的就是POST和GET两种方式,其他方式这里也不进行扩展。

这里我们结合CSDN的登录进行介绍

打开以下网页 https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn 我们可以看到需要我们输入一个是账号,一个是密码。

点击登录之后,网页就是利用post的方式,把上面两个输入项作为参数,动态的发送过去了。

import urllib.parseimport urllib.requestvalues = {}

运行之后我们发现又跳回了登录界面,里面我们看到返回网页中有这么一段注释:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多