爬虫requests模块和数据分类以及cookie和session

一、requests模块(重点)

(一)requests模块简介

    Urllib和requests模块是发起http请求最常见的模块。

    安装:pip install reqeusts

(二)requests模块的get方法

        1、response = requests.get(

           url=请求url地址,

           headers = 请求头字典,

           params=请求参数字典,

        )

        2、get请求一般带参数,带参数就将参数封装到params字典中就可以了。

           案例:新浪新闻,两种分装params请求参数方式

        3、response对象

           (1)响应正文:

               a、字符串格式的响应正文:response.text

               b、字节类型(bytes)的响应正文:response.content

           (2)响应正文的乱码问题解决:

               a、encode和decode就是二进制和字符串之间转换方法。

               编程里面数据载体

                  存储用变量或者常量

                  可以看到数据的内容一定是字符串格式。

                  正常的计算机数据本质都是二进制--bytes。

                str.encode('编码')--->bytes

                bytes.decode('编码')---->str

               乱码:编码不一致造成的。

               response.content.decode('页面的正确编码')---得到页面正确的字符串内容

              

               b、response.text之所以可以获取字符串格式,其实在requests模块的底层用

               response.encoding这个属性所对应的编码来将二进制内容变成字符串。其实就是response.encoding所对应的编码错了。只需要指定正确的即可。

               response.encoding这个属性值值是requests模块自动识别。

               response.encoding='页面正确编码'

               response.text---》正确的页面内容

               如果response.text乱码了,可以先给response.encoding设置正确编码,在通过response.text就可以获取正确的页面内容。

              

               内置函数&内置模块:python自带的模块

               dir()

               str()

           (3)状态码:response.status_code

           (4)响应头:response.headers

        4、分页如何实现?

           分页的请求的每一页url基本上都是通过get请求的一个请求参数决定的,所以其实只需要通过get请求的params字典中的分页字段找到规律,就可以了。

           案例:百度贴吧分页信息爬取

(三)requests post请求

        response = requests.post(

           url = 请求url地址,

           headers = 请求头字典,

           data=请求数据字典,

        )---response对象。

      

 

              

三、数据的分类

    1、分类

    (1)结构化数据:能用关系型数据库描述的数据。

        特点:数据以行为单位,一行数据表示一个实体的信息,每一行的数据的属性是相同的。

        举例:关系数据库中存储的表

        处理方法:sql---结构化查询语言---语言---可以在关系型数据库中对数据的操作。

    (2)半结构化数据:拥有字描述结构数据

        特点:包含相关标记,用来分隔语义元素以及对记录和字段进行分层----也别成为自描述结构

        举例:html,xml,json。

        处理方法:正则,xpath(xml,html)

    (3)非结构化数据:

        特点:没有固定结构的数据。

        举例:文档,图片,视频,音频等等,都是通过整体存储二进制格式来保存的。

            如果下载视频,音频。

        处理:

           response = requests.get(url='视频的地址')

           保存response.content即可,文件名称后要注意。

    2、json(json(JavaScript Object Notation,JS对象标记))数据

        json是一种数据【交换】的格式。

        json是如何来进行交换的。

        【json其实是在js语言中,用'字符串'的形式来表示json中的对象和数组的一种技术。】所以json本质上是字符串。

        js中的对象:var obj = {name:'zhangsan',age:'10'}----在python中这个可以当成:字典

        js中的数组:var arr = ['a','b','c','d']----在python中这个可以当成:list。

    3、json数据的处理(重点)

        (1)使用json模块处理。

        json_str:json数据

        json.loads(json_str)--->python的list或者字典

        json.dumps(python的list或者字典)--->json_str

        (2)在requests模块中,response对象有个json方法,可以直接得到相应json字符串解析后的内容

           response.json()--->python的list或者字典

四、cookie和session

    1、什么是cookie和session?

        cookie是网站用来辨别用户身份,进行会话跟踪,存储在本地终端上的数据。

        session(会话)起来本含义是指有始有终的一系列动作和消息。在web中,session主要用来在服务器端存储特定用户对象会话所需要的信息。

    2、cookie和session产生的原因:

        http协议是一个无状态协议,在特定操作的时候,需要保存信息,进而产生了cookie和session。

    3、cookie原理:

        由服务器来产生,浏览器第一次请求,服务器发送给客户端进而保存。

        浏览器继续访问时,就会在请求头的cookie字段上附带cookie信息,这样服务器就可以识别是谁在访问了。

       

        但是cookie存在缺陷:

           1、不安全--本地保存,容易被篡改。

           2、大小受限,本身最大4kb。

          

        cookie虽然在一定程度上解决了‘保持状态’的需求,但是我们希望有一种新的技术可以克服cookie缺陷,这种技术就是session。

    4、session原理:

        session在服务器保存。----解决安全问题。

        问题来了:服务器上的session,但是客户端请求发送过来,服务器如何知道session_a,session_b,到底和那个请求对应。

        所以为了解决这个问题:cookie就作为这个桥梁。在cookie有一个sessionid字段,可以用来表示这个请求对应服务器中的哪一个session。

        禁用cookie,一般情况下,session也无法使用。特殊情况下可以使用url重写技术来使用session。

           url重写技术:将sessionid拼接到url里面。

          

        session的生命周期:服务器创建开始,有效期结束(一般网站设定都是大约30分钟左右),就删除。

5、常见误区:打开浏览器中的一个网页,浏览器关闭,这个网页的session会不会失效?
        不会,服务器到底删除不删除session,由session的生命周期。有效期结束,就会被删除。
 6、cookie的字段
        (1)Name : 该的名称。一旦创建, 该名称便不可更改。
        (2)value : 该cookie 的值。如果值为Unicode 字符, 需要为字符编码。如果值为二进制数据, 则需要使用BASE64 编码。
        (3)Domain : 可以访问该cookle 的域名。例如, 如果设置为.zhihu.com , 则所有以zhihu.com 结尾的域名都可以访问该cookie。
        (4)MaxAge : 该cookie 失效的时间, 单位为秒, 也常和Expires一起使用, 通过它可以计算出其有效时间。Max Age 如果为正数, 则该cookie 在Max Age 秒之后失效。如果为负数, 则关闭浏览器时cookie 即失效, 也不会以任何形式保存该cookie 。
        (5)Path : 该cookie 的使用路径。如果设置为/path/ , 则只有路径为/ path / 的页面可以访问该cookie 。如果设置为/ , 则本域名下的所有页面都可以访问该cookieo
        (6)Size 字段: 此Cookie 的大小。
        (8)HTTP 字段: cookie 的httponly 属性。若此属性为true , 则只有在HTTP 头中会带有此Cookie 的信息, 而不能通过document.cookie 来访问此Cookie。
        (9)Secure : 该cookie 是否仅被使用安全协议传输。安全协议有H TTP s 和SSL 等, 在网络上传输数据之前先将数据加密。默认为false。

    7、会话cookie和持久cookie
    会话cookie:Max Age 为负数,则关闭浏览器时cookie 即失效,保存在内存中的cookie。
    持久cookie:Max Age 如果为正数, 则该cookie 在Max Age 秒之后失效。保存在硬盘上的cookie

    持久化:将内存中数据持久化到硬盘上。其实就是数据保存到文件或者数据库中。
    内存主要的作用就是由于速度快速度快,启动应用软件或者程序的时候,就会分配一定内存空间作为该程序运行内存。
    内存一旦断点,就会被清空。
    
    序列化:将对象持久化到硬盘中。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python爬虫中的cookiesession是两个重要的概念。 Cookie是服务器在客户端存储的一小段文本信息,用于记录用户的登录状态、浏览历史等信息。在Python爬虫中,我们可以使用requests库中的cookies参数来设置和获取cookie信息。 Session是一种记录用户状态的机制,它可以在不同的请求之间保持用户的登录状态。在Python爬虫中,我们可以使用requests库中的Session对象来创建一个会话,从而实现登录、保持登录状态等操作。通过Session对象,我们可以方便地管理cookie信息,实现自动登录和持久化会话等功能。 ### 回答2: Python爬虫是指使用Python语言编写程序,自动获取互联网上的信息并进行数据分析或者存储的技术。而CookieSession则是爬虫程序中常用的两种技术,它们的作用是帮助爬虫程序模拟网站的登录情况和维持网站和爬虫程序之间的会话状态,以便进行身份认证和绕过防护机制。 Cookie是存储在浏览器客户端的数据,主要用于表示用户身份、用户访问时间、用户信息等,如用户访问某个网站时会在浏览器中创建一个Cookie,这个Cookie信息会被服务器进行读取和处理。当爬虫程序需要模拟网站登录时,需要获取并保存服务器返回的Cookie,以便后续更好的请求和响应网站数据。Python中通过requests模块进行Cookie的使用。requests模块中有一个Session对象,默认情况下,Session对象会存储Cookie到本地,这就相当于保存了用户的登录状态,方便后面的请求使用。在requests的get和post方法调用时,通过传递session对象作为第一个参数,就可以在整个请求过程中使用保存过的Cookie信息。具体使用方法如下: ``` # 创建session对象 import requests session = requests.Session() # 网站登录请求 session.post(login_url, data=user_data) # 获取用户信息 user_info = session.get(user_url) ``` 而Session则是保存Web应用程序会话的数据结构,即Session是由Web应用程序使用的一种机制,该机制通过在客户端存储或通过增加HTTP Cookie的方式传递标识符来维护状态信息。Session数据保存在服务器端,每次请求时都会带上保存在Cookie中的Session ID,服务器根据Session ID来查找对应的Session对象。在Python中,我们可以通过Flask、Django等Web框架来实现Session的使用。 综上,CookieSession爬虫程序中非常重要的技术,能够帮助爬虫程序更好地模拟登录和保持会话,让爬虫程序更快速、准确地抓取网站信息。但需要注意的是,爬虫程序的使用需要遵守网站的相关规定和道德底线,不得违反相关法律法规和道德规范。 ### 回答3: Python爬虫是一个广泛应用于网络数据抓取和处理的技术。在Python爬虫中,cookiesession是非常重要的概念,它们有助于实现身份验证和保持用户会话状态。在本篇文章中,我们将具体介绍cookiesession在Python爬虫中的应用。 1. Cookie Cookie是一种客户端存储机制,通常由Web服务器在HTTP响应头中返回。Cookie可以包含存储在客户端计算机上的信息,并在相应的HTTP请求中发送回服务器。Python中的Requests库可以方便地处理Cookie,使用方法如下: ``` import requests # 创建Session对象 s=requests.Session() # 访问登陆页,获取cookie s.get('http://www.example.com/login') # 从响应中读取cookie cookie=s.cookies.get_dict() # 发送带有cookie的请求 s.get('http://www.example.com/user',cookies=cookie) ``` 从上面的代码可以看出,通过创建一个Session对象,我们可以在访问登陆页时获取Cookie,在后续请求中将Cookie发送回服务器。这种方式可以模拟用户登陆状态,方便爬取需要用户身份验证的数据。 2. Session Session是另一种用于跟踪用户会话状态的机制。与Cookie不同,Session是由Web服务器在服务器端管理的。当用户发送请求时,服务器会为用户创建一个Session,该Session在Web服务器上存储。Python中也可以方便地使用Session来处理会话状态,使用方法如下: ``` import requests # 创建Session对象 s=requests.Session() # 在Session中发起请求 s.get('http://www.example.com/user') ``` 通过创建一个Session对象,我们可以在爬取时保持用户的会话状态,实现一些需要用户登录后才能进行的操作。与Cookie不同,Session的内部机制是由Web服务器实现的,并不需要我们自己去处理。 总结 从上述内容可以看出,CookieSession在python爬虫中起着至关重要的作用。Cookie可以方便地处理用户身份验证,从而实现一些需要用户身份验证的操作。而Session则可以方便地处理用户会话状态,为用户提供一种无缝的体验,在爬虫中也有广泛的应用。因此,Python爬虫开发者应该熟练掌握CookieSession的用法,以便在爬取数据时更加高效、方便。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值