Python BS4无法选择正确的“范围”

Python BS4无法选择正确的“范围”,python,python-3.x,web-scraping,beautifulsoup,Python,Python 3.x,Web Scraping,Beautifulsoup,我曾试图从某个网站上获取价格,下面是HTML代码的一个小示例: 可利用性: 有现货的 价格: £65.40 税后: £54.50 £65.40 * 类型及;额外费用: -请选择- 每个 数量: 我试图选择54.50英镑的价格,这是不含英国税的价格 我使用的代码如下: 导入请求 从bs4导入BeautifulSoup 作为pd进口熊猫 var1=请求。gethttps://www.website.co.uk, headers={'User-agent':'Moz

我曾试图从某个网站上获取价格,下面是HTML代码的一个小示例:

可利用性: 有现货的 价格: £65.40 税后: £54.50 £65.40 * 类型及;额外费用: -请选择- 每个 数量: 我试图选择54.50英镑的价格,这是不含英国税的价格

我使用的代码如下:

导入请求 从bs4导入BeautifulSoup 作为pd进口熊猫 var1=请求。gethttps://www.website.co.uk, headers={'User-agent':'Mozilla/5.0 X11;Ubuntu;Linux x86_64;rv:61.0 Gecko/20100101 Firefox/61.0'} var2=var1.content soup=BeautifulSoupvar2,html.parser span=soup.findspan,{class:label} 价格=span.text 价格 输出:“库存中”

此“库存”位于HTML代码前面的几行

有现货的
有人能告诉我正确的跨度方向吗?

您选择了span=soup.findspan,{class:label},第一个带有类标签的跨度,您得到了它。通过span=soup.find_allspan,{class:label},limit=3[2]

您选择了span=soup.findspan,{class:label},第一个带有类标签的span,您得到了期望值。您可以使用span=soup.find_allspan,{class:label},limit=3[2]获得所需的值。

您可以使用CSS选择器第n个子项:

输出:

£54.50

您可以使用CSS选择器第n个子项:

输出:

£54.50
另一种方法

from simplified_scrapy.spider import SimplifiedDoc
html = '''your html
'''
doc = SimplifiedDoc(html)  # create doc
span = doc.getElement('span', start="Price:")
print (span.text)
结果:

£65.40
另一种方法

from simplified_scrapy.spider import SimplifiedDoc
html = '''your html
'''
doc = SimplifiedDoc(html)  # create doc
span = doc.getElement('span', start="Price:")
print (span.text)
结果:

£65.40

非常感谢托马斯,这非常有用。祝你度过愉快的一天。非常感谢托马斯,这非常有用。祝你有美好的一天。