Python爬虫基础教程(一)

一、爬虫的概念:

    网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟客户端发送网络请求,接收请求响应,

    一种按照一定的规则,自动地抓取互联网信息的程序。

二、爬虫的分类:

    1、通用爬虫:通常指搜索引擎的爬虫

    2、聚焦爬虫:针对特定网站的爬虫

三、爬虫的工作流程:

        

扫描二维码关注公众号,回复: 6539292 查看本文章

四、Robots协议:

    网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。

五、Requests的初步使用:

    1、作用:发送网络请求,返回响应数据

    2、发送简单的请求:response = requests.get(url)

         2.1response的常用方法:

                    response.text

                    respones.content

                    response.status_code

                    response.request.headers

                    response.headers

         2.2response.text 和response.content的区别:

                    a.返回数据类型不同,response.text返回的是str类型数据,response.content返回的是bytes类型

                    b.解码类型不同,response.text的解码类型是根据HTTP 头部对响应的编码作出有根据的推测,推测的文本编码

                                               response.content没有指定解码类型

                    c. 推荐使用response.content.deocde()的方式获取响应

         2.3发送带header的请求:

                    a.为什么请求需要带上header?

                       为了模拟浏览器请求从而获取和浏览器一致的内容

                    b.header的形式:字典

                    c.用法: requests.get(url,headers=headers)

        2.4发送带参数的请求:

                    a.什么叫做请求参数:

                           https://www.baidu.com/?wd=python&c=b

                    b.请求参数的形式:字典

                    c.用法:requests.get(url,params=kw)

        

六、使用Requests爬取百度贴吧的内容案例:

  

七、Requests深入

       1.发送POST请求

            1.1POST请求的使用场景:

                    a.登录注册(POST比GET更安全)

                    b.需要传输大文本内容的时候(POST请求对长数据没有要求)

            1.2发送POST请求:

                    a.用法:response = requests.post("http://www.baidu.com/", data = data,headers=headers)

                    b.data的形式:字典

        

       2.使用代理

            2.1为什么使用代理?

                    a.让服务器以为不是同一个客户端在请求

                    b.防止我们的真实地址被泄露,防止被追究

            2.2代理的使用图示:

                     

            2.3正向代理和反向代理:

                        

            2.4代理的使用方法:

                    a.requests.get("http://www.baidu.com", proxies = proxies)

                    b.proxies的形式:字典

                    c.proxies使用举例:proxies = {

                                                          "http": "http://12.34.56.79:9527",

                                                          "https": "https://12.34.56.79:9527",

                                                    }

        3.cookie和session

             3.1cookie和session的区别:

                   a.cookie数据存放在客户的浏览器上,session数据放在服务器上。

                   b.cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗。

                   c.session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能。

                   d.单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

             3.2爬虫处理cookie和session:

                   a.带上cookie、session的好处:

                              能够请求到登录之后的页面

                   b.带上cookie、session的弊端:

                              一套cookie和session往往和一个用户对应,请求太快,请求次数太多,容易被服务器识别为爬虫

                   c.使用原则:

                              不需要cookie的时候尽量不去使用cookie,但是为了获取登录之后的页面,我们必须发送带有cookies的请求

                   d.处理cookies 、session请求:

                              requests 提供了一个session类,来实现客户端和服务端的会话保持

                   e.cookies、session的使用方法:

                              实例化一个session对象:session = requests.session()

                              让session发送get或者post请求:response = session.get(url,headers)

        4.Requests小技巧

                4.1 把cookie对象转化为字典:reqeusts.util.dict_from_cookiejar

                4.2请求 SSL证书验证:response = requests.get("https://www.12306.cn/ ", verify=False)

                4.3设置超时:response = requests.get(url, 1)

                4.4配合状态码判断是否请求成功:assert response.status_code == 200

猜你喜欢

转载自blog.csdn.net/qq_40652101/article/details/90479630