从beautifulsoup中提取整数
问题描述:
如何从中提取“3200: - ”?从beautifulsoup中提取整数
<p class="list_price font-large" itemprop="price">3 200:-</p>
price = soup.find_all("p", {"class": "list_price font-large"}, {"itemprop": "price"})[0]
def get_price():
for integer in price:
return(integer)
print(get_price())
,并打印出3200我,但我如何能更有效地做到这一点?
答
这个循环是没有必要的,如果你只想要第一个项目,不要使用find_all
price = soup.find("p", {"class": "list_price font-large"}, {"itemprop": "price"}).text
请注意,您没有收到整数。 3 200:-
是一个字符串。
如果你想要一个整数,则需要分别从字符串过滤掉所有非数值,然后使用int()
答
3 200:-
是节点的文本。您可以使用.text
属性来访问它:
s = '<p class="list_price font-large" itemprop="price">3 200:-</p>'
from bs4 import BeautifulSoup
soup = BeautifulSoup(s, "html.parser")
price = soup.find_all("p", {"class": "list_price font-large"}, {"itemprop": "price"})
for node in price:
print(node.text)
# 3 200:-
然后你就可以删除空格的方式,你希望:
for node in price:
print(node.text.replace(' ', ''))
# 3200:-
或者,如果你只是想号码,您可以用re
模块从字符串中删除所有非数字:
import re
for node in price:
print(re.sub(r'\D', '', node.text))
# 3200
答
price= soup.find("p", {"class": "list_price font-large"}, {"itemprop": "price"}).text
# price => '3 200:-'
price = price.replace(' ','')
# price => '3200:-'
import re
price = int(re.search('[0-9]+',price).group(0))
# price =>3200
有一个for循环回似乎不正确的投 –