Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python通过CSS选择器获取跨度值_Python_Html_Css - Fatal编程技术网

Python通过CSS选择器获取跨度值

Python通过CSS选择器获取跨度值,python,html,css,Python,Html,Css,我想通过CSS选择器提取跨度的值 soup = BeautifulSoup("<body><main><div class='rentalprice'><span>3.000</span></div></main></body>") pagecontent = soup.find('body') price = pagecontent.main.div.span.text # t

我想通过CSS选择器提取跨度的值

soup = BeautifulSoup("<body><main><div class='rentalprice'><span>3.000</span></div></main></body>")
pagecontent = soup.find('body')

price = pagecontent.main.div.span.text # this line works although it's not suitable for production since I've now ignored the div class selector

#I then tried this:
price = pagecontent.select('main div.rentalprice span').text
最后一行抛出错误:

发生异常:AttributeError。ResultSet对象没有属性“text”。您可能将元素列表视为单个元素。当你打算给find打电话时,你给find打电话了吗

我怎样才能解决这个问题?我不想使用for循环,因为只有1个跨度匹配

我已经检查过: 选择返回元素列表,但只能在单个元素上使用.text

如果确定只有1个span匹配,则可以将select返回的列表中的第一个元素作为目标:

否则,可以使用for循环:

for elem in pagecontent.select('main div.rentalprice span'): 
    print(elem.text)
使用。查找

for elem in pagecontent.select('main div.rentalprice span'): 
    print(elem.text)
from bs4 import BeautifulSoup

soup = BeautifulSoup("<body><main><div class='rentalprice'><span>3.000</span></div></main></body>", 'html.parser')
pagecontent = soup.find('body')
price = pagecontent.find('span').text
print(price) # 3.000