当前位置: 首页 > 知识库问答 >
问题:

使用beautifulSoup在没有类的情况下从标记中进行刮取

关苗宣
2023-03-14

如果我想从锚标记中的href属性和字符串“水平零黎明”中刮出链接。

因为锚标记没有自己的类,并且在整个源代码中有更多的锚标记。

使用beautifulSoup可以做些什么来获取所需的数据

<div class="prodName">
 <a href="/product.php?sku=123;name=Horizon Zero Dawn">Horizon Zero Dawn</a></div>

共有1个答案

芮雪风
2023-03-14

锚标签没有自己的类并不重要。通过找到父div,然后找到具有适当的href属性和文本的锚,我们可以提取所需的两个值:

from bs4 import BeautifulSoup

page = '<div class="prodName"><a href="/product.php?sku=123;name=Horizon Zero Dawn">Horizon Zero Dawn</a></div>'

soup = BeautifulSoup(page)

div = soup.find('div', {'class': 'prodName'})
a = div.find('a', {'href': True}, text='Horizon Zero Dawn')

print a['href']
print a.get_text()

这打印:

/product.php?sku=123;name=Horizon Zero Dawn
Horizon Zero Dawn

编辑:

评论后更新。如果页面中有多个div元素,则需要循环遍历它们并找到每个元素中存在的所有a元素,如下所示:

import requests
from bs4 import BeautifulSoup

url ='https://in.webuy.com/product.php?scid=1'
source_code = requests.get(url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text,'html.parser')
for div in soup.findAll('div',{'class':'prodName'}):
    a = div.findAll('a')
    for link in a:
        href = link.get('href')
        print(href)
 类似资料:
  • 我试图刮一个页面与美丽的汤,有

  • 我正在尝试刮网页,在那里我需要解码整个表到一个数据帧。我正为此使用漂亮的汤。在某些标记中,有一些标记没有任何文本。但这些值会显示在网页上的特定span标记中。 下面的代码对应于该网页, 但是,这个标记中显示的值是。我试着删掉它,但我收到的是空短信。 如何刮这个价值使用美丽的汤。 URL:https://en.tutiempo.net/climate/ws-432950.html 下面给出了我的用于

  • 我需要从一个网站刮去内容(只是标题)。我做了一个页面,但我会需要做的网站上的所有页面。目前,我正在做以下工作: 我知道,当我移动到下一页时,url会发生如下变化: 我尝试使用next_page_url=base_url+next_page_partial构建一个递归函数,但它不会移动到下一页。 我遵循这个问题(和答案):移动到下一页使用BeautifulSoup刮刮 如果你需要更多的信息请告诉我。

  • 我看到的所有解决方案都需要使用。但是,我想在Eclipse之外的单个文件上使用CDT解析器。那有什么办法吗?

  • 我正试图从Zalora那里获得3件事:1。项目品牌2。项目名称3。项目价格(旧) 以下是我最初的尝试: 输出: 然后我做进一步的调查: 输出: 这是令我困惑的奇怪的事情,在ul标签中应该有很多标签(我需要的3样东西都在那些隐藏的标签中),为什么它们不显示? 事实上,我试图在ul标签中使用BeautifulSoup刮取的所有内容都没有输出。

  • 我不想再使用powermock了。因为junit5开始模拟静态类。因此,我试图摆脱powermock方法。 当我使用PowerMock时,我可以很容易地发现一个具有私有构造函数的类,然后我调用静态方法。 这是我代码的一部分(当我使用PowerMock时) 在我做了MessageValidationUtils.class的间谍对象后,我正在测试这个: 经过一些研究,我找不到任何与监视一个具有私有构造