当前位置:   article > 正文

python爬虫爬取微博评论--完整版(超详细,大学生不骗大学生)_微博评论爬虫

微博评论爬虫

目录

一、找到页面

 二、学会使用检查元素

2.1 打开检查元素界面

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

2.2.1 搜索评论

2.2.2  找到data表

三、基础部分代码实现 

 四、格式化输出

4.1 了解存储格式

4.2 单独取出内容

4.3 取出所有评论内容

4.4 格式化读取信息

五、导出成表格形式

六、了解分页

6.1 查看分页

6.2 寻找分页的规律

七、多页实现 

八、完整代码

九、大多数报错原因


一、找到页面

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

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

它的评论内容是这样的

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

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

 二、学会使用检查元素

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来找到网站

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

  1. #requets是一个爬虫的第三方库,需要单独安装
  2. import requests
  3. #url是一访问网站的地址(这个不是很了解,但是我们代码是需要通过url来找到你要爬取的网页)
  4. url = ''
  5. #1.发送请求(定义一个response变量用来存储从url所对应的网页得到的信息)
  6. response = requests.get(url=url)
  7. #2.打印请求状态(response有很多属性,比如text等等,但是直接打印response是打印当前请求的状态码,200是成功,404是错误)
  8. print(response)

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

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

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

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

  1. #requets是一个爬虫的第三方库,需要单独安装
  2. import requests
  3. #url是一访问网站的地址
  4. 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'
  5. #1.发送请求
  6. response = requests.get(url=url)
  7. #2.打印请求状态
  8. print(response)

这里我用PyCharm运行一下代码

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

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

  1. #requets是一个爬虫的第三方库,需要单独安装
  2. import requests
  3. #url是一访问网站的地址
  4. 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'
  5. #1.发送请求
  6. response = requests.get(url=url)
  7. #2.打印网页数据
  8. print(response.text)

我们运行一下

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

  1. import requests
  2. # 请求头
  3. headers = {
  4. # 用户身份信息
  5. 'cookie' : '',
  6. # 防盗链
  7. 'referer' : '',
  8. # 浏览器基本信息
  9. 'user-agent' : ''
  10. }
  11. url = 'https://weibo.com/ajax/statuses/buildComments?is_reload=1&id=5017675820436181&is_show_bulletin=2&is_mix=0&count=10&uid=2810373291'
  12. # 1.发送请求
  13. response = requests.get(url=url,headers=headers)
  14. #2.打印网页数据
  15. print(response.text)

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

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

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

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

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

  1. import requests
  2. # 请求头
  3. headers = {
  4. # 用户身份信息
  5. '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==',
  6. # 防盗链
  7. 'referer' : 'https://weibo.com/2810373291/O7pPo1Ptb',
  8. # 浏览器基本信息
  9. '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'
  10. }
  11. url = 'https://weibo.com/ajax/statuses/buildComments?is_reload=1&id=5017675820436181&is_show_bulletin=2&is_mix=0&count=10&uid=2810373291'
  12. # 1.发送请求
  13. response = requests.get(url=url,headers=headers)
  14. #2.打印网页数据
  15. print(response.text)

运行一下 

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

 四、格式化输出

那么接下来,我们想要将这些数据更加规整的输出

4.1 了解存储格式

1.那么我们首先要观察这些数据的存储方式

打开网页 -> 单击右键 -> 审查元素 -> 搜索一条评论 -> 点击预览(preview) -> 点击data旁边的小箭头 -> 点击 0 旁边的小箭头

那么在这林我们可以看到这里存有很多关于评论的数据,例如text_raw是评论的文本内容,source是发表评论人的ip来源地,id是发表评论人的id等等等

4.2 单独取出内容

那么我们先将第一个评论的text_raw用代码取出来试一下

  1. import requests
  2. # 请求头
  3. headers = {
  4. # 用户身份信息
  5. '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==',
  6. # 防盗链
  7. 'referer' : 'https://weibo.com/2810373291/O7pPo1Ptb',
  8. # 浏览器基本信息
  9. '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'
  10. }
  11. url = 'https://weibo.com/ajax/statuses/buildComments?is_reload=1&id=5017675820436181&is_show_bulletin=2&is_mix=0&count=10&uid=2810373291'
  12. # 1.发送请求
  13. response = requests.get(url=url,headers=headers)
  14. #2.打印网页数据
  15. # .text:获取文本数据
  16. # .json():json字符串数据
  17. # .content:获取二进制数据
  18. # 这里如果我们想要单独取出数据,我们需要用json格式,它是一个格式化的数据
  19. # 用json格式获取数据后我们要找到第一条评论的内容
  20. # 我们把preview界面看作一个文件夹,那么我们首先打开的是 data ,然后是 0 ,然后是 text_raw
  21. # 这里注意 data、text_raw 是字符串要加单引号,但是 0 是整数不用单引号
  22. # 最后用类似于数组的方式访问
  23. print(response.json()['data'][0]['text_raw'])

运行一下

可以看到我们顺利取到了第一条评论的内容

4.3 取出所有评论内容

接下来我们将所有的评论内容都取出来,但是我们也不能一条一条写01234,所以,这里我们会用到循环

  1. import requests
  2. # 请求头
  3. headers = {
  4. # 用户身份信息
  5. '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==',
  6. # 防盗链
  7. 'referer' : 'https://weibo.com/2810373291/O7pPo1Ptb',
  8. # 浏览器基本信息
  9. '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'
  10. }
  11. url = 'https://weibo.com/ajax/statuses/buildComments?is_reload=1&id=5017675820436181&is_show_bulletin=2&is_mix=0&count=10&uid=2810373291'
  12. # 1.发送请求
  13. response = requests.get(url=url,headers=headers)
  14. # 2.打印网页数据
  15. # 定义一个json_data来存储 response.json()的数据
  16. json_data = response.json()
  17. # 定义一个data_list取出所有data中的数据
  18. data_list = json_data['data']
  19. # 定义一个data数据,让它便利data_list里面的对象
  20. # 这里怎么理解呢,data_list看作一个数组,我让data等于数组的第一个数
  21. # 然后执行操作,执行完之后返回for,我们再另data等于数组的第二个数执行操作
  22. # 循环往复
  23. for data in data_list:
  24. # 这里 data 代表着 data_list的第一个数也就是 ['data'][0]
  25. text_raw = data['text_raw']
  26. print(text_raw)

运行一下

4.4 格式化读取信息

可以看到我们已经取出了所有的评论,那么可能大家还需要爬取这个评论的其他数据,例如发评论人的id,昵称和该条评论的点赞数量

  1. import requests
  2. # 请求头
  3. headers = {
  4. # 用户身份信息
  5. '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==',
  6. # 防盗链
  7. 'referer' : 'https://weibo.com/2810373291/O7pPo1Ptb',
  8. # 浏览器基本信息
  9. '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'
  10. }
  11. url = 'https://weibo.com/ajax/statuses/buildComments?is_reload=1&id=5017675820436181&is_show_bulletin=2&is_mix=0&count=10&uid=2810373291'
  12. # 1.发送请求
  13. response = requests.get(url=url,headers=headers)
  14. # 2.打印网页数据
  15. json_data = response.json()
  16. data_list = json_data['data']
  17. for data in data_list:
  18. text_raw = data['text_raw']
  19. id = data['id'] # 发表评论人的id
  20. created_at = data['created_at'] # 评论发表在什么时候
  21. like_counts = data['like_counts'] # 该评论的点赞数量
  22. total_number = data['total_number'] # 该条评论被别人回复的数量
  23. screen_name = data['user']['screen_name'] # 发表评论人的昵称
  24. print(id,screen_name,text_raw,like_counts,total_number,created_at)

运行一下

可以看现在的输出数据已经很规整了

五、导出成表格形式

我们将输出的数据导出成表格形式,更加方便我们观察与使用

  1. import requests
  2. import csv
  3. f = open('评论.csv',mode='a',encoding='utf-8-sig',newline='')
  4. csv_write = csv.writer((f))
  5. csv_write.writerow(['id','screen_name','text_raw','like_counts','total_number','created_at'])
  6. # 请求头
  7. headers = {
  8. # 用户身份信息
  9. '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==',
  10. # 防盗链
  11. 'referer' : 'https://weibo.com/2810373291/O7pPo1Ptb',
  12. # 浏览器基本信息
  13. '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'
  14. }
  15. url = 'https://weibo.com/ajax/statuses/buildComments?is_reload=1&id=5017675820436181&is_show_bulletin=2&is_mix=0&count=10&uid=2810373291'
  16. # 1.发送请求
  17. response = requests.get(url=url,headers=headers)
  18. # 2.获取数据
  19. # 3.提取数据
  20. json_data = response.json()
  21. data_list = json_data['data']
  22. for data in data_list:
  23. text_raw = data['text_raw']
  24. id = data['id']
  25. created_at = data['created_at']
  26. like_counts = data['like_counts']
  27. total_number = data['total_number']
  28. screen_name = data['user']['screen_name']
  29. print(id,screen_name,text_raw,like_counts,total_number,created_at)
  30. # 4.保存数据
  31. csv_write.writerow([id,screen_name,text_raw,like_counts,total_number,created_at])

运行一下

我们可以看到,有一个格式是 .csv 的文件生成了,我们可以在访问中打开它

打开表格

太棒啦能看到这里!!!!!!!(加油加油加油)

六、了解分页

6.1 查看分页

这里为了方便演示多页的评论,我寻找了一个评论在两千条左右的帖子

找到页面 -> 单机右键 -> 检查元素(审查元素) -> 点击网络(network) -> 点击小的放大镜(搜索)-> 复制一条评论 -> 进行搜索 -> 点击标头(headers) 

PS:之前的文章里有详细的一步一步的操作演示,如果有遇到问题的可以去看一下

 我们能看到这个界面,这是你复制的那条评论所对应的分页的一个URL

在这里我们可以看到这个“buildComments”,这是对应的整篇帖子的评论的包,我们复制这一小部分

注意不要复制多了真正需要复制的其实只有buildComments,也可以自己打,但是为了避免手打出现错误我是比较推荐复制

将这一小部分粘贴至过滤(filter) -> 回车

此时我们会看到,立即出现一个分页的搜索结果

然后不关闭检查元素的界面 -> 我们将鼠标移到帖子的部分,向下划动贴子中的评论,此时我们会发现,随着我们不断向下划动,会逐渐出现更多的搜索结果

6.2 寻找分页的规律

首先我们观察一下第一个分页的URL

点击第一个搜索的结果(就是名称下面的那四行,我们先点击第一行)

在这里我们可以看到第一个页面的URL是这样的

然后我们查看第二个页面的URL

我们观察一下这两个URL的区别

我们发现绿色框住的是第一个分页的,它是“count=10”没有max_id,二粉色框住的URL是有max_id的,不知道大家之前有没有印象,在我们预览(preview)界面中,我们是见到过max_id的,所以我们观察一下第一个分页的max_id

打开第一个分页的预览(preview)界面

我们发现第一个分页的max_id和第二个分页URL中的max_id是完全一样的,我们可以多观察几组(例如第二个分页的max_id和第三个分页URL中的max_id)

然后我们就发现了不同分页之间的规律

七、多页实现 

在前面的代码中我们已经实现了单页的评论爬取,在这里我们是需要对URL进行修改就可

(下面演示的代码是不完全,只写出来新加的代码)

  1. headers = {
  2. # 之前的headers的值
  3. }
  4. # 定义一个get_next宏函数,在函数立里面定一个next变量,它的初值是 count=10
  5. def get_next(next='count=10’):
  6. # 然后我们把URL这里的 count=10 替换成 next 变量的值
  7. url = f'https://weibo.com/ajax/statuses/buildComments?is_reload=1&id=5003170104741808&is_show_bulletin=2&is_mix=0&{next}&uid=7190522839&fetch_level=0&locale=zh-CN’
  8. response = requests.get(url=url,headers=headers)
  9. json_data = response.json()
  10. data_list = json_data['data']
  11. max_id = json_data['max_id’] # 这里是单独获取这个分页的max_id
  12. #这里是正常的格式化获取数据代码,为了方便观察新代码的结构我没写上
  13. # 这里把单纯的 max_id 的数字加上 max_id=
  14. max_str = 'max_id='+str(max_id)
  15. # 调用get_next,且更行next的值
  16. get_next(max_str)
  17. # 调用方法
  18. get_next()

八、完整代码

我们把之前的代码加上

  1. import requests
  2. import csv
  3. f = open('评论.csv',mode='a',encoding='utf-8-sig',newline='')
  4. csv_write = csv.writer(f)
  5. csv_write.writerow(['id','screen_name','text_raw','like_counts','total_number','created_at'])
  6. # 请求头
  7. headers = {
  8. # 用户身份信息
  9. 'cookie': 'SINAGLOBAL=3869338173200.8403.1711845564842; SUB=_2A25LDMCxDeRhGeFJ71sS8CvLzTmIHXVoYFx5rDV8PUNbmtB-LVD9kW9Nf6JZvhCZ3PGanwgbD1yc6zGrHhnf6wrq; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9W586R5s7_p1VykF21DkOu3L5JpX5o275NHD95QNS0B4e05fS0qfWs4DqcjAMJv09CH8SE-4BC-RSFH8SCHFxb-ReEH8SFHFBC-RBbH8Sb-4SEHWSCH81FHWxCHFeFH8Sb-4BEHWB7tt; ALF=1712450401; ULV=1711898034864:2:2:2:7503967975067.276.1711898034641:1711845565244; XSRF-TOKEN=aCKBvTY69V5X8kKbW1jSLjdj; WBPSESS=7dB0l9FjbY-Rzc9u1r7G0AeIukWsnj2u9VSmMssaP8z8nNdVQm3MrakDKiijTO3Y_iL6pEDJ8mgGw5Ql6jIh-fzvfDRMIeuWHMU2fJkIgYlwx20EQfKsyJ2pPS9worRswHbmrN7qQifEsHMJ5esrgA==',
  10. # 防盗链
  11. 'referer': 'https://weibo.com/7190522839/O1kt4jTyM',
  12. # 浏览器基本信息
  13. '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'
  14. }
  15. def get_next( next = 'count=10'):
  16. url = f'https://weibo.com/ajax/statuses/buildComments?is_reload=1&id=5003170104741808&is_show_bulletin=2&is_mix=0&{next}&uid=7190522839&fetch_level=0&locale=zh-CN'
  17. response = requests.get(url=url,headers=headers)
  18. json_data = response.json()
  19. data_list = json_data['data']
  20. max_id = json_data['max_id']
  21. for data in data_list:
  22. text_raw = data['text_raw']
  23. id = data['id']
  24. created_at = data['created_at']
  25. like_counts = data['like_counts']
  26. total_number = data['total_number']
  27. screen_name = data['user']['screen_name']
  28. print(id,screen_name,text_raw,like_counts,total_number,created_at)
  29. csv_write.writerow([id,screen_name,text_raw,like_counts,total_number,created_at])
  30. max_str = 'max_id='+str(max_id)
  31. get_next(max_str)
  32. get_next()

但是我每次爬的话最多是爬五百条左右,就感觉进度不怎么动了

到这第一步就彻底成功喽!!!!!!

打开生成的表格之前的文章里面有!

九、大多数报错原因

我的电脑是苹果的,它的user-agent可能和大家的电脑不一样,如果报json或者data的错误,可以尝试:

referer是网址,你打开网址检查元素,看一下url和cookie还有user-agent是不是一样的,然后修改一下,再看看能不能运行

有任何问题或者写的有错误,都可以在评论区和我说,虽然我不一定会,因为我也是刚入门!!


就是之前这篇文章是分上中下写的,后面怕大家感觉麻烦我就把上中下合成一个了

欢迎大家给我指出错误或者和我交流!!!!!!

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号