提问人:BotheredNow 提问时间:7/22/2023 最后编辑:BotheredNow 更新时间:7/25/2023 访问量:41
使用 python 从同名的 HTML div 框中提取信息
Pulling information from HTML div boxes with the same name using python
问:
所以基本上我一直在试图弄清楚如何抓取 bigo.tv 聊天,我遇到的第一个问题是如何提取发送到聊天的每条消息,首先,由于发送的每条聊天消息都被赋予了相同的 div 容器 id,并且 div 框的类与发送的消息类型不同(type1=chatMessages, type6=gifts),我附上了一张截图,演示了 type 6 聊天消息(gift)的 HTML 结构,我是一个非常基础的 python 程序员,我愿意学习和扩展我的知识,我只是迷失了从哪里开始,并且没有对这个主题感兴趣的朋友可以交谈。
我期望用这个脚本完成什么:
根据 div 类(type1、type6 等)将(用户级别、用户名、用户消息/礼物)提取到单独的文本文件中。
脚本必须在整个实时流中持续运行,但不能重复已输入的任何条目。
就像我说的,我不是在要求代码,但指向正确方向的指针会非常有帮助!我一直在研究 beautifulsoup4,但作为一个不成熟的 Python 程序员,我正在努力寻找一个起点。
这是我试图用来获取至少一条聊天消息但没有成功的代码。
from bs4 import BeautifulSoup
import requests
r=requests.get("https://www.bigo.tv/875643864")
soup=BeautifulSoup(r.content,"html.parser")
div_text=soup.find("div",{"class":"user-text-content"}).get_text()
print(div_text)
我不得不附上错误的照片,因为我无法复制和粘贴它,因为我在 Chromebook 上并使用 pydroid3
答:
0赞
Prashant Patil
7/25/2023
#1
使用 BeautifulSoup 和 Requests 进行网络抓取,您走在正确的轨道上。但是,如果尝试查找的元素在页面上不存在,则可能会遇到错误。若要处理此类情况,应在尝试访问其属性之前检查该元素是否存在。
下面是一个简单的代码片段,可帮助您开始提取聊天消息:
from bs4 import BeautifulSoup
import requests
def scrape_chat_messages():
url = "https://www.bigo.tv/875643864"
r = requests.get(url)
soup = BeautifulSoup(r.content, "html.parser")
chat_messages = []
# Find all chat message elements
chat_elements = soup.find_all("div", {"class": "user-text-content"})
for chat_element in chat_elements:
# Extract the user level, user name, and user message/gift from the chat element
user_level = chat_element.find("span", {"class": "user-level"}).get_text()
user_name = chat_element.find("span", {"class": "user-name"}).get_text()
user_message = chat_element.find("span", {"class": "message"}).get_text()
# Append the extracted chat message to the list
chat_messages.append({
"user_level": user_level,
"user_name": user_name,
"user_message": user_message
})
return chat_messages
if __name__ == "__main__":
messages = scrape_chat_messages()
print(messages)
评论