网页上可以看到评论,但是 BeautifulSoup 返回的 html 对象不包含评论部分

Posted

技术标签:

【中文标题】网页上可以看到评论,但是 BeautifulSoup 返回的 html 对象不包含评论部分【英文标题】:Comments are visible on the webpage, but the html object returned by BeautifulSoup did not contain the comment parts 【发布时间】:2019-08-15 05:45:54 【问题描述】:

我尝试使用其 URL 链接从网页中提取 cmets 的文本内容,并使用 BeautifulSoup 进行抓取。当我单击 URL 链接时,页面上可以看到 cmets 的内容,但是 BeautifulSoup 返回的 html 对象不包含这些标签和文本。

我使用 BeautifulSoup 和 'html.parser' 来进行网页抓取。我成功提取了给定网页中视频的点赞数/观看次数/cmets 数,但 HTML 文件中不包含评论部分的信息。我使用的浏览器是Chrome,系统是Ubuntu 18.04.1 LTS。

这是我使用的代码(在 python 中):

from urllib.request import urlopen
from bs4 import BeautifulSoup
import os

webpage_link = "https://www.airvuz.com/video/Majestic-Beast-Nanuk?id=59b2a56141ab4823e61ea901"

try:
    page = urlopen(webpage_link)
except urllib.error.HTTPError as err:  # webpage cannot be found
    print("ERROR! %s" %(webpage_link))

soup = BeautifulSoup(page, 'html.parser')

预期的结果是汤对象包含网页上可见的所有内容,尤其是 cmets 的文本内容(例如“不在那儿,我很享受看到白熊的生活方式。感谢提供者提供这样的服务纪录片。”和“哇……太棒了……”);但是,我在汤对象中找不到相应的节点。 任何帮助将不胜感激!

【问题讨论】:

我已经尝试过这里的解决方案帖子:***.com/questions/1936466/…,但它也没有工作.. 【参考方案1】:

cmets 由 JavasSript 通过 ajax 请求生成。您可以发送相同的请求并从 json 响应中获取 cmets。您可以使用检查工具中的网络选项卡找到请求。

from urllib.request import urlopen
from bs4 import BeautifulSoup, Comment
import json
webpage_link = "https://www.airvuz.com/api/comments/video/59b2a56141ab4823e61ea901?page=1&limit=20"
page = urlopen(webpage_link).read()
comments_json=data = json.loads(page)
for comment_info in comments_json['data']:
    print(comment_info['comment'].strip()) 

输出

Not being there I enjoyed a lot seeing the life style of white bear. Thanks to the provider for  such documentary.
WOOOW... amazing...
I've been photographing polar bears for years, but to see this footage from a drones perspective was epic! Well done and congratz on the Nominee! Well deserved.
You are da man Florian!
Absolutely outstanding!
This is incredible
jaw dropping
This is wow amazing, love it.
So cool! Did the bears react to the drone at all?
Congratulations! It's awesome! I am watching in tears....
Awesome!
perfect video awesome
It is very, very beautiful !!! Sincere congratulations
Made my day, exquisite, thank you
Wow
Super!
Marvelous!
Man this is incredible!
Material is good, but  edi is bad. This history about  beer's family...
Muy bueno!

【讨论】:

比你!你是怎么得到webpage_link的值的?

以上是关于网页上可以看到评论,但是 BeautifulSoup 返回的 html 对象不包含评论部分的主要内容,如果未能解决你的问题,请参考以下文章

Python请求数据错误?

快速收集有价值的网页,微博,邮件!

快速收集有价值的网页,微博,邮件!

获取数据——爬取某微博评论

抖音电脑网页版上线 可在PC端发视频点赞看评论

如何用python 爬虫在社交媒体上抓取评论