首页 > 解决方案 > 跨度类中的Python解析字符串

问题描述

我已经尝试过其他解决方案,但没有奏效。这是我的跨度标签:

<span class="DFlfde SwHCTb" data-precision="2" data-value="7.0498">7,05</span>

这是我的完整代码

import requests
from bs4 import BeautifulSoup
#<span class="DFlfde SwHCTb" data-precision="2" data-value="7.0498">7,05</span>
url = "https://www.google.com/search?q={}+kaç+tl".format(input())
r = requests.get(url)
source = BeautifulSoup(r.content,"html")
print(source.find_all("span",string="DFlfde SwHCTb"))

它返回一个空列表,我需要值“7.05”,我怎样才能达到它?谢谢

标签: pythonbeautifulsouppython-requests

解决方案


获取数据需要做两件事:

  1. 指定User-Agent标题(谷歌需要这个来返回正确的数据)
  2. .find_all指定class_=参数中,而不是 string

代码:

import requests
from bs4 import BeautifulSoup

url = "https://www.google.com/search?q=100+kaç+tl"
headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0'}

r = requests.get(url, headers=headers)
source = BeautifulSoup(r.content, "html.parser")
print(source.find_all("span", class_="DFlfde SwHCTb"))

# or

print(source.select_one('span.DFlfde.SwHCTb').text)

印刷:

[<span class="DFlfde SwHCTb" data-precision="2" data-value="13.0095">13,01</span>]
13,01

推荐阅读