Python 2.7 在重复标记中查找文本

Python 2.7 在重复标记中查找文本,python-2.7,beautifulsoup,Python 2.7,Beautifulsoup,试图从网页获取span类中的特定文本。我可以获得第一个实例,但不确定如何迭代以获得所需的实例 <div class="pricing-base__plan-pricing"> <div class="pricing-base__plan-price pricing-base__plan-price--annual"> <sup class="pricing-base__price-symbol">$</sup> <span class="p

试图从网页获取span类中的特定文本。我可以获得第一个实例,但不确定如何迭代以获得所需的实例

<div class="pricing-base__plan-pricing">
<div class="pricing-base__plan-price pricing-base__plan-price--annual">
<sup class="pricing-base__price-symbol">$</sup>

<span class="pricing-base__price-value">14</span></div>
<div class="pricing-base__plan-price pricing-base__plan-price--monthly">
<sup class="pricing-base__price-symbol">$</sup>
<span class="pricing-base__price-value">18</span>
</div>
<div class="pricing-base__term">
<div class="pricing-base__term-wrapper">
<div class="pricing-base__date">mo*</div>
 </div>

$
14
$
18
钼*
我需要把“18”排在队伍里 十八


这个数字经常变化,这正是我的代码想要解决的问题。

您可以使用如图所示的类选择器检索所有价格的列表,然后索引到该列表中,以获得年度和月度价格

import requests
from bs4 import BeautifulSoup as bs

r = requests.get('https://www.gotomeeting.com/meeting/pricingc')
soup = bs(r.content, 'lxml')
prices = [item.text for item in soup.select('.pricing-base__price-value')]
monthly = prices[1]
annual = prices[0]

您还可以添加父类:

monthly = soup.select_one('.pricing-base__plan-price--monthly .pricing-base__price-value').text
annual = soup.select_one('.pricing-base__plan-price--annual .pricing-base__price-value').text
例如:


为什么需要第二个?你总是想要每月的价格计划吗?你需要迭代吗?您愿意使用CSS选择器吗?看起来您可能可以使用类似于
的东西。选择(“.pricing-base\uuuu plan-price--monthly.pricing-base\uuuu price-value”)
来获取元素,即获取值。让我试试这个选项。事实上,我将得到每年14和每月18,并在一个电子表格中填充。你能分享网址吗?页面上是否只有这两个价格(使用该类)?第一个方法工作并获取所有价格,但我注意到屏幕上HTML中的一个价格与scrape获取的价格不同。他们可能会运行一些JS,根据我的浏览器改变价格吗?如果是这样,我如何获得与屏幕上的内容相匹配的内容?在通过BeautifulSoup之前,考虑运行PyQT来模拟浏览器。我得到的第二个方法是AttributeError:'NoneType'对象没有属性'text'错误。我运行得很好。但我得到的是英国的价格,而不是美国的价格。我检查了英国的价格是否匹配。添加了示例屏幕截图。