python学习--爬取微博评论

目录

url 和referer

PID

UID

params

r = requests.get(url, headers=headers, params=params)

params

params的优势

CSV

DataFrame

 PermissionError: [Errno 13] Permission denied

Python 标准库中的 urllib 和 urllib2 模块是什么


爬取微博的代码对于小白来说应该会有很多不认识的知识,这篇文章就是给大家扫盲用的,知识点记得没啥顺序的,按照目录过一遍大概就可以了。

url 和referer

URLReferer(也称为 Referrer)是 HTTP 协议中的两个概念,它们在 Web 开发中经常被提到。它们之间的主要区别如下:

  1. URL(Uniform Resource Locator),即统一资源定位符,用于指定 Web 上的资源位置。例如,https://www.example.com/path/to/resource?param=value 就是一个 URL。Internet上的每一个网页都具有一个唯一的名称标识,通常称之为URL(Uniform Resource Locator, 统一资源定位器)。它是www的统一资源定位标志,简单地说URL就是web地址,俗称“网址”。
  2. Referer(或 Referrer),即来源页面,是指通过链接或请求访问当前页面的前一个页面的 URL。在 HTTP 请求中,Referer 用于标识客户端从哪个页面链接访问了当前页面,例如,在 A 页面中设置了一个链接指向 B 页面,如果用户点击该链接进入 B 页面,那么 B 页面的 Referer 就是 A 页面的 URL。Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer。

因此,URL 主要用于标识资源的位置,而 Referer 主要用于标识请求的来源页面。两者都是在 HTTP 请求中使用的概念,但其作用不同,各自有其特定的应用场景

    cookie其实就是一些数据信息,类型为“小型文本文件”,存储于电脑上的文本文件中。我们想象一个场景,当我们打开一个网站时,如果这个网站我们曾经登录过,那么当我们再次打开网站时,发现就不需要再次登录了,而是直接进入了首页。例如bilibili,csdn等网站。这是怎么做到的呢?其实就是游览器保存了我们的cookie,里面记录了一些信息,当然,这些cookie是服务器创建后返回给游览器的。游览器只进行了保存。下面展示bilibili网站保存的cookie。

PID

PID 是进程标识符或进程 ID(Process ID)的缩写,是一种用于唯一标识一个正在运行中的进程(当前程序,当前页面)的数字。在计算机操作系统中,每个进程都会被分配一个唯一的 PID。PID 被广泛应用于操作系统中,比如进程管理、资源管理、进程调度等方面。通过 PID,我们可以区别不同的进程,并对其进行管理和控制。例如,如果想要杀死一个进程,则可以使用其 PID 来执行杀死操作。

要获取当前进程的 PID,需要使用 os.getpid() 函数,该函数返回当前进程的 PID。示例代码如下:

import os

pid = os.getpid()
print("当前进程的PID:", pid)

执行以上代码后,输出将显示当前进程的 PID。

另外,还可以使用 os.getppid() 函数获取当前进程的父进程的 PID,示例代码如下:

import os

ppid = os.getppid()
print("当前进程的父进程的PID:", ppid)

执行以上代码后,输出将显示当前进程的父进程的 PID。

UID

UID 是用户标识符或用户 ID(User ID)的缩写,是一种用于唯一标识用户的数字。在 Unix/Linux 等操作系统中,每个用户都会被分配一个唯一的 UID。

UID 是一种非常重要的概念,它被广泛应用于操作系统中,比如文件和目录的访问控制、进程权限管理等方面。通过 UID,我们可以区分不同的用户,并对其进行管理和控制。

在 Python 中,我们可以使用 os 模块来获取当前进程所属的用户的 UID。具体可以使用 os.getuid() 函数来获取当前进程的 UID。示例代码如下:

import os

uid = os.getuid()
print("当前进程的UID:", uid)

执行以上代码后,输出将显示当前进程所属的用户的 UID。

注意,获取 UID 通常需要运行在具有对应权限的账户下,否则可能会出现权限不足等问题。

params

在 Python 中,params 并不是内置函数,而是一个变量名、参数名或者字典键值的一部分。在 HTTP 请求中,我们可以使用 params 参数来设置查询参数(Query Parameters)。

具体来说,如果你使用的是 requests 模块来发送 HTTP 请求,那么可以通过设置 params 参数来设置查询参数。例如,在以下代码中:

import requests

url = "https://www.example.com/search"
params = {"q": "python"}

response = requests.get(url, params=params)

其中,我们使用 requests.get 方法发送了一个 GET 请求,并设置了 params 参数为一个字典,该字典中包含一个查询参数 q,其取值为 "python"。这样,在发送请求时,requests 模块会自动将查询参数拼接到 URL 后面,从而实现带有查询参数的请求。

需要注意的是,在不同的 HTTP 请求库中,params 参数的用法可能有所不同。但总体来说,它都是用于设置查询参数的。

params的优势

你可以将完整的请求 URL 直接传递给 requests.get(),但是使用 params 参数的优势在于它可以非常方便地构造包含多个查询参数的 URL,而且可以使用字典对象来指定这些查询参数。

当你需要发送包含多个查询参数的 GET 请求时,将查询参数直接拼接在 URL 后面可能会显得冗长、混乱、难以维护。使用 params 参数可以让你更加简洁地构造请求 URL,并且便于管理查询参数。

此外,使用 params 参数还具有以下优势:

  • 可以自动将查询参数转义,避免在 URL 中出现非法字符。
  • 可以将查询参数值转换为不同类型(例如字符串、数字、布尔型)。
  • 代码更易读、易于维护,因为查询参数是作为字典对象进行传递的。

总之,使用 params 参数可以让构造包含多个查询参数的 URL 更加方便、简洁、可读性高,并且避免了一些错误和不必要的麻烦。

 

r = requests.get(url, headers=headers, params=params)

requests.get(url, headers=headers, params=params) 是使用 Python 的 requests 库向指定的 URL 发送 GET 请求的代码。

具体来说,我们传递了三个参数:

  • url:表示要访问的 URL 地址。
  • headers:一个字典对象,表示请求头。在这个例子中,我们通过设置请求头中的 User-Agent 字段伪装成一个浏览器,以避免被目标网站禁止访问。
  • params:一个字典对象,表示查询参数。在这个例子中,我们通过设置查询参数 q 来指定搜索关键字。

在执行 requests.get 方法后,服务器会根据传递的 URL、请求头和查询参数等信息,返回一个 Response 对象。可以使用 r.text 来获取服务器返回的响应内容(以字符串形式),或使用 r.json() 来获取响应内容(以 JSON 格式解析后的 Python 对象形式)。

需要注意的是,在使用 requests 库时,通常需要根据实际情况设置请求头和查询参数等信息,以确保请求能够正常发送并得到相应结果。

CSV

CSV 是 Comma-Separated Values(逗号分隔值)的缩写,是一种常用的文件格式,用于存储表格数据,其中每一行代表一个记录,每个字段使用逗号进行分隔。CSV 文件可以用任何文本编辑器打开,并且可以被许多应用程序和编程语言(如 Microsoft Excel、Google Sheets、Python 等等)读取和写入。

以下面的表格为例:

姓名年龄性别
李华25
张三31
王五28

将这个表格存储为 CSV 文件时,可以将每个字段之间用逗号 , 分割,且每一行数据之间用换行符 \n 分割,例如:

姓名,年龄,性别
李华,25,男
张三,31,女
王五,28,男

使用各种语言和工具读取和处理这样的 CSV 文件非常方便,通常只需要读取每行数据,然后使用逗号分隔每个字段即可。例如,在 Python 中,我们可以使用 pandas 库中的 read_csv() 函数读取 CSV 文件并返回一个数据框架对象:pd.read_csv('filename.csv')

DataFrame

DataFrame 的中文含义是“数据框架”或者“数据表格”,它是Pandas库中用于表示二维、异质性数据的主要数据结构之一,广泛应用于数据处理和数据分析领域。

DataFramepandas 库中最核心的数据结构,它类似于电子表格或数据库中的二维表格,可以用来存储和操作数据。

DataFrame 由多个行和列组成,每一列可以看作是一个 Series 对象,每一行则由各个列组成的数据组成。DataFrame 可以容易地进行切片、筛选、重组、聚合等操作,还可以方便地与其他数据源交互。

pandas 中,我们可以使用 pd.DataFrame() 函数来创建一个空的数据框架,也可以使用一些预定义的函数来读取和导出数据,例如 pd.read_csv() 可以读取 CSV 文件,pd.read_excel() 可以读取 Excel 文件,df.to_csv() 可以将数据框架保存到 CSV 文件中。

下面是一个使用 pd.DataFrame() 函数创建数据框架的示例:

import pandas as pd

data = {'Name': ['Tom', 'Jerry', 'Mike'],
        'Age': [20, 22, 24],
        'Gender': ['M', 'M', 'F']}
df = pd.DataFrame(data)

print(df)

运行上述代码后,会输出以下结果:

    Name  Age Gender
0    Tom   20     M
1  Jerry   22     M
2   Mike   24     F

以上代码中,我们首先使用 Python 的字典类型来创建一个数据集 data,然后使用 pd.DataFrame() 函数将其转换成数据框架 df。最后我们将 df 打印出来,可以看到这个数据框架包含了三列数据:姓名、年龄和性别。

 PermissionError: [Errno 13] Permission denied

这个错误提示说明你的 Python 脚本没有权限向文件夹中写入数据。常见的解决方法有:

  1. 确认路径是否正确:首先检查路径是否输入正确,包括文件夹路径和文件名。如果路径不存在或文件名有误,Python 就无法找到对应的文件。

  2. 确认文件是否已经被其他程序占用:如果文件正在被其他程序占用,那么 Python 就无法向其中写入数据。可以先尝试关闭其他程序,并重启 Python 脚本。

  3. 确认 Python 进程是否有写入权限:如果你使用的是 Windows 操作系统,可以尝试以管理员身份运行 Python 程序;如果你使用的是 Linux 或 Mac OS X 操作系统,可以尝试修改目标文件夹的权限。

  4. 修改文件路径:如果你无法修改文件夹的权限,可以尝试将文件保存到其他文件夹中,例如保存到当前用户的主目录下,或者保存到 Python 脚本所在目录下。

Python 标准库中的 urllib 和 urllib2 模块是什么

urlliburllib2 都是 Python 标准库中用于处理 URL 请求的模块,它们的主要作用是提供一些工具来与 Web 服务器进行数据交互,比如发送请求、获取响应等。

具体来说,urllib 模块中包含若干子模块,其主要功能如下:

  • urllib.request:用于发送 HTTP 请求,并获取响应。
  • urllib.parse:用于解析 URL,拼接 URL 等操作。
  • urllib.error:定义了用于处理异常的类和函数。

urllib2 模块则是 urllib 模块的增强版,具有更为丰富的功能和更强的扩展性,可以支持 HTTP、HTTPS、FTP 协议的访问,同时支持 Cookie、代理等功能。

需要注意的是,在 Python 3.x 版本中,urlliburllib2 已经被合并成一个模块,即 urllib.request。因此,在 Python 3.x 中,我们需要使用 urllib.request 来取代 urlliburllib2

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值