目录

一、找到页面

 二、学会使用检查元素

2.1 打开检查元素界面

2.2 找到所有评论所在的位置

2.2.1 搜索评论

2.2.2  找到data表

三、基础部分代码实现 ​​​​​​​


全部已经更完(下面两个链接是中和下)

https://blog.csdn.net/m0_68325382/article/details/137234661?spm=1001.2014.3001.5502

爬虫爬取微博评论--下--多页爬取(超详细教程,大学生不骗大学生)-CSDN博客 

一、找到页面

首先你需要找到一个你想要爬取的页面

(这里我是随机找的一个微博帖子)

它的评论内容是这样的

然后我们今天的内容就是从这个页面的评论里面提取我们想要的

(其实学会了之后不只可以爬取评论的内容喔!!)

 二、学会使用检查元素

2.1 打开检查元素界面

在你打开的页面->单机右键->检查元素(或者是审查元素),然后我们就可以看到这个界面

这里你的上面一行表头可能会是英文嘟没关系(我会把英文界面该点的标在括号里)

我们主要用的是网络(network)这部分 

点击网络(network) 

如果点击小放大镜后界面和我这个差不多那就大概率是对的 

如果你没有这小放大镜可以换个浏览器

(我目前用下来,苹果自带的Safari浏览器是不行的,我用的这个例子里是360浏览器,是OK嘟,大家可以参考一下)

2.2 找到所有评论所在的位置

2.2.1 搜索评论

这里我们在搜索的界面输入我们这个帖子里面随便一条评论的内容,点击搜索 

如果你在这里黏贴了评论的内容但是,显示搜索不到结果你可以试一试

不关闭检查元素的界面->退出当前网页或者你随机点一个人的主页->再回到评论界面->搜索评论内容就会出现了!

2.2.2  找到data表

下一步我们 点击搜索出的结果

显示的界面是这样的

然后我们点击这个预览(preview)

再说一次喔,有可能大家的检查元素打开的是全英文的,但是没关系我会把英文该点的标在括号里

(后面的大部分操作都是在这个预览界面的) 

点击data旁边的小三角,展开data

展现的结果是这样的 

然后这个里面的0-19,就是0-19条评论的数据,包括一些评论内容,评论人的ID,评论被点赞的数量等等,我们一会要爬取的数据就是从这里来的

三、基础部分代码实现 

首先我们要知道想要爬取一个网站的数据我们首先需要访问网站

我们的代码需要通过网站的url来找到网站

下面我们先将爬取网站的基础格式写出来

#requets是一个爬虫的第三方库,需要单独安装
import requests

#url是一访问网站的地址(这个不是很了解,但是我们代码是需要通过url来找到你要爬取的网页)
url = ''

#1.发送请求(定义一个response变量用来存储从url所对应的网页得到的信息)
response = requests.get(url=url)

#2.打印请求状态(response有很多属性,比如text等等,但是直接打印response是打印当前请求的状态码,200是成功,404是错误)
print(response)

从上面的几行代码我们就能实现对网站的访问,但是,我们该怎么获取一个网站的url呢?

找到我们有data列表的那个检查元素界面->点击标头(headers)

在这里可以看到一个 “请求网址” (URL),这个就是我们的请求头

将这个URL复制到我们代码里面

#requets是一个爬虫的第三方库,需要单独安装
import requests

#url是一访问网站的地址
url = 'https://weibo.com/ajax/statuses/buildComments?is_reload=1&id=5017675820436181&is_show_bulletin=2&is_mix=0&count=10&uid=2810373291&fetch_level=0&locale=zh-CN'

#1.发送请求
response = requests.get(url=url)

#2.打印请求状态
print(response)

这里我用PyCharm运行一下代码

可以看到输出显示 <Response [200]>,代表着我们访问成功了

下一步我们可以试着把网页的数据用 .text的方式拿出来 

#requets是一个爬虫的第三方库,需要单独安装
import requests

#url是一访问网站的地址
url = 'https://weibo.com/ajax/statuses/buildComments?is_reload=1&id=5017675820436181&is_show_bulletin=2&is_mix=0&count=10&uid=2810373291&fetch_level=0&locale=zh-CN'

#1.发送请求
response = requests.get(url=url)

#2.打印网页数据
print(response.text)

我们运行一下

 但是我们发现这个并不是像我们想的一样,将网页的文本用文字的方式呈现,那么接下来我们要用到一个方法,让我们能够用文字的方式输出网页数据----->定义请求头

import requests

# 请求头
headers = {
    # 用户身份信息
    'cookie' : '',
    # 防盗链
    'referer' : '',
    # 浏览器基本信息
    'user-agent' : ''
}

url = 'https://weibo.com/ajax/statuses/buildComments?is_reload=1&id=5017675820436181&is_show_bulletin=2&is_mix=0&count=10&uid=2810373291'
# 1.发送请求
response = requests.get(url=url,headers=headers)

#2.打印网页数据
print(response.text)

为什么要定义请求头,因为从网站的设置初衷,它是不想服务于我们的爬虫程序的,网站正常只想服务于客户的访问服务,那么我们要将我们的爬虫程序伪装成为正常的服务。

此时我们需要定义一些数据来伪装,通常我们只需要设置 cookie 、referee、user-agent就够了(如果有些特殊的网站可能需要我们有其他的参数) 

那么我们cookie这些数据从哪里来呢,我们回到网站的那个请求头(headers)的检查元素界面 

在这个界面向下划动,找到 cookie 、referer 、user-agent 

我们将 cookie 、referer 、user-agent 的数据分别粘贴在代码里面

import requests

# 请求头
headers = {
    # 用户身份信息
    'cookie' : 'XSRF-TOKEN=KVMLznKAi1u5t7UavCDVyD0I; _s_tentry=weibo.com; Apache=3869338173200.8403.1711845564842; SINAGLOBAL=3869338173200.8403.1711845564842; ULV=1711845565244:1:1:1:3869338173200.8403.1711845564842:; PC_TOKEN=dcbe0bd978; SUB=_2A25LDMCxDeRhGeFJ71sS8CvLzTmIHXVoYFx5rDV8PUNbmtB-LVD9kW9Nf6JZvhCZ3PGanwgbD1yc6zGrHhnf6wrq; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9W586R5s7_p1VykF21DkOu3L5JpX5o275NHD95QNS0B4e05fS0qfWs4DqcjAMJv09CH8SE-4BC-RSFH8SCHFxb-ReEH8SFHFBC-RBbH8Sb-4SEHWSCH81FHWxCHFeFH8Sb-4BEHWB7tt; ALF=1712450401; SSOLoginState=1711845601; WBPSESS=7dB0l9FjbY-Rzc9u1r7G0AeIukWsnj2u9VSmMssaP8z8nNdVQm3MrakDKiijTO3Y_iL6pEDJ8mgGw5Ql6jIh-aVUQoUZdu9LfLYmAiNsLqi43OBU2ZJdNYv4zIWorgKZiAz8JGn2kAugZwnStCVYKw==',
    # 防盗链
    'referer' : 'https://weibo.com/2810373291/O7pPo1Ptb',
    # 浏览器基本信息
    'user-agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.95 Safari/537.36'
}
url = 'https://weibo.com/ajax/statuses/buildComments?is_reload=1&id=5017675820436181&is_show_bulletin=2&is_mix=0&count=10&uid=2810373291'
# 1.发送请求
response = requests.get(url=url,headers=headers)

#2.打印网页数据
print(response.text)

运行一下 

 在这里可以看到,我们已经拿到文字式的数据,但是数据过于多和复杂,没办法很好的现实提取评论内容


晚点再写累累累累累,有需要的大家可以先收藏,我会更新的,因为我自己是昨天就做完了,

但是要写的详细真的蛮累的!!!!

yes!!!!!我又回来更新了!!!

因为我们又有作业了,累死我!!!!!

OK!!!!咱们明天说怎么爬取连续几页的评论

因为其实它这个评论是分页的,我们一次是爬不完嘟明天说

更多推荐