微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用美丽的汤

如何解决使用美丽的汤

我正在尝试从页面提取此部分:

enter image description here

使用检查我看到:

enter image description here

inspect 视图中定义的结构是否总是遵循 bs4 返回的内容

我正在使用:

import json
import requests
from bs4 import BeautifulSoup

url = "https://docs.google.com/document/d/e/2PACX-1vSWVk1yd_I_zhVROYN2wv1r1y_54M-QL0199ZQ4g9mQZ7QdzekVzsRFUB_JVfkInwLxDNPmrwlY2x7y/pub?fbclid=IwAR0BsTNrbDeLb6j7tU2XhVxeh9WaQU_vELyDS3oNvem3eapiJ1zoBqZIYes"    
soup = BeautifulSoup(requests.get(url).content,"html.parser")  
data = soup.find_all('span',"c2")

但它返回:

[<span class="c2"></span>,<span class="c2"></span>,<span class="c2">Gyventojai,kuriems yra daugiau nei 65 Metai (1.14 prioritetas)</span>,<span class="c2">——————————————————————</span>,<span class="c2">Švietimo sistemos darbuotojai bei abiturientai (1.15 prioritetas)</span>,<span class="c2">Diplomatai (1.16)</span>,<span class="c2">Sergantieji lėtinėmis ligomis (1.17)</span>,<span class="c2">Socialinių paslaugų teikėjai (1.18)</span>,<span class="c2">1.20 prioritetas: gyvybiškai svarbias valstybės funkcijas atliekantys asmenys,kontaktuojantys su kitais asmenimis (pareigūnai,prekybos įmonių salės darbuotojai ir kt.),išskyrus bendrųjų funkcijų darbuotojus. Šiuo metu šio prioriteto sąrašai nuolat keliami.</span>,<span class="c2">Gyventojų grupė 55-64 m.</span>,<span class="c2">.</span>,<span class="c2"></span>]

其中不包括 <p class="c6"><span class="c2">ŠIUO METU - TIK SENJORAI:</span></p>

我不确定为什么,因为它在检查视图和 class c2 返回的 data 中都清楚地说明了 bs4

我是否应该始终遵循包含多个 find 语句的嵌套结构,或者获取所需数据的最佳做法是什么?

解决方法

问题是,CSS 类名在每次重新加载时都会更改,因此有时是 c7,重新加载时是 c1 等等。

此示例将搜索包含“红色”颜色的 CSS 类名称(如您想要的文本一样),然后使用此类名称查找您的文本:

import re
import requests
from bs4 import BeautifulSoup


url = "https://docs.google.com/document/d/e/2PACX-1vSWVk1yd_I_zhVROYN2wv1r1y_54M-QL0199ZQ4g9mQZ7QdzekVzsRFUB_JVfkInwLxDNPmrwlY2x7y/pub?fbclid=IwAR0BsTNrbDeLb6j7tU2XhVxeh9WaQU_vELyDS3oNvem3eapiJ1zoBqZIYes"

html_doc = requests.get(url).text

# find CSS class name that is red:
class_name = re.search(r"\.(c\d+)\{color:#cc0000;",html_doc).group(1)
soup = BeautifulSoup(html_doc,"html.parser")

print(soup.find(class_=class_name).text)

打印:

ŠIUO METU - TIK SENJORAI:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?