我正在尝试从网页获取文本-https://www.symantec.com/security_response/definitions.jsp?pid=sep14
他说的到底在哪里- 基于文件的保护(传统防病毒) 扩展版本:4/18/2019版本。2
但我仍然面临着错误,我可以得到的部分,它说-4/18/2019修订版。二
from bs4 import BeautifulSoup
import requests
import re
page = requests.get("https://www.symantec.com/security_response/definitions.jsp?pid=sep14")
soup = BeautifulSoup(page.content, 'html.parser')
extended = soup.find_all('div', class_='unit size1of2 feedBody')
print(extended)
我改变了你的代码如下,现在它显示你想要
试试这个吧
实际上,您可以使用CSS选择器来实现这一点。这是用漂亮的汤4.7+。在这里,我们的目标与上面所做的
div
和类相同,但我们也会查找子代li
,它是直接子代> strong
。然后使用自定义伪类:contains()
来确保strong
元素包含文本Extended Version:
。我们使用select_one
API调用,因为它将返回第一个匹配的元素,select
将返回列表中所有匹配的元素,但我们只需要一个一旦有了
strong
元素,我们就知道下一个同级文本节点有我们想要的信息,所以我们可以使用next_sibling
来获取该文本:输出
编辑:正如@QHarr在评论中提到的那样,您很可能只需要一个更简化的
strong:contains("Extended Version:")
就可以了。记住:contains()
搜索给定元素的所有子文本节点,甚至子元素的子文本节点,这一点很重要,因此特定性非常重要。我不会使用:contains("Extended Version:")
,因为它会找到div
、列表元素等,所以通过指定(至少)strong
应该将选择范围缩小到足以满足您的需要相关问题 更多 >
编程相关推荐