如何找到具有特定值的span标签,然后找到其所在的父标签?

时间:2019-06-05 19:04:57

标签: html python-3.x beautifulsoup

我正在尝试为某个交易抓取一个网站,特别是当某产品100%折扣时。

如何找到此页面中所有值为-100%的跨度标签,例如<span>-100%</span>

如果找到其中之一,我该如何向父项获取嵌套在其中的标签。

我正在使用python 3.x和漂亮的汤。

这是我现在使用的代码:

from bs4 import BeautifulSoup
import urllib.request
link = 'https://store.steampowered.com/search/?sort_by=Price_ASC&ignore_preferences=1&page=524'
html = urllib.request.urlopen(link)
soup = BeautifulSoup(html, "html.parser")
parents = [element.parent for element in soup.find_all("span", string="-80%")]
print(parents)

2 个答案:

答案 0 :(得分:1)

请查看BeautifulSoup - search by text inside a tag,以更深入地讨论类似问题。

简而言之,您需要使用bs4方法find_allparent,例如:

parents = [element.parent for element in soup.find_all("span", string="-100%")]

soup是HTML代码的bs4对象。

希望这会有所帮助!

答案 1 :(得分:0)

您可以将:has:contains与bs4 4.7.1一起使用以指定您的请求。列表的页数一直在变化,请记住这一点。

import requests
from bs4 import BeautifulSoup as bs

r = requests.get('https://store.steampowered.com/search/?sort_by=Price_ASC&ignore_preferences=1&page=520', headers = {'User-Agent' : 'Mozilla\5.0'})
soup = bs(r.content,"lxml")
items= [(item.text.strip(), item['href']) for item in soup.select('a:has(span:contains("-80%"))')]
print(items)