我正在尝试遵循此处发布的指南:https://medium.freecodecamp.org/how-to-scrape-websites-with-python-and-beautifulsoup-5946935d93fe
我现在在这里,我应该以大概的名字来命名。
name_box = soup.find('h1',attrs = {'class':'name'})
我怀疑查询价格时也会遇到麻烦。我必须用html中的“ priceText__1853e8a5”替换“ price”吗?
price_box = soup.find('div',attrs = {'class':'price'})
谢谢,这将是巨大的帮助。
答案 0 :(得分:0)
如果将price
替换为priceText__1853e8a5
,将会得到结果,但是我怀疑类名是动态更改的/是动态生成的(请注意末尾的数字)。因此,要获得结果,您需要更强大的功能。
您可以使用CSS选择器(通过select()
/ select_one()
方法来定位BeautifulSoups中的标签。此示例将定位以<span>
属性为class
的所有priceText
标签1}}(^=
运算符-有关CSS选择器here的更多信息)。
from bs4 import BeautifulSoup
import requests
r = requests.get('https://www.bloomberg.com/quote/SPX:IND')
soup = BeautifulSoup(r.text, 'lxml')
print(soup.select_one('span[class^="priceText"]').text)
此打印:
2,813.36
答案 1 :(得分:0)
您可以选择几种方法。
// span [包含(@class,'priceText __')]
price_tag = soup.find_all('span',{'class': re.compile(r'priceText __。*?')})
我不确定正则表达式模式,因为它不好。欢迎进行编辑。