Python抓取信息具有相同的类
如何从中返回数据。我正在尝试提取打开和关闭的数据。问题是这两个数字在代码中共享同一个类 它们都共享这个类“Trsdu(0.3s)” 如果类相同,我如何区分它们Python抓取信息具有相同的类,python,web-scraping,beautifulsoup,Python,Web Scraping,Beautifulsoup,如何从中返回数据。我正在尝试提取打开和关闭的数据。问题是这两个数字在代码中共享同一个类 它们都共享这个类“Trsdu(0.3s)” 如果类相同,我如何区分它们 import requests from bs4 import BeautifulSoup goog = requests.get('https://finance.yahoo.com/quote/FB?p=FB') googsoup = BeautifulSoup(goog.text, 'html.parser') googclo
import requests
from bs4 import BeautifulSoup
goog = requests.get('https://finance.yahoo.com/quote/FB?p=FB')
googsoup = BeautifulSoup(goog.text, 'html.parser')
googclose = googsoup.find(class_='Trsdu(0.3s) ').get_text()
此功能:
googclose=googsoup.find(class='Trsdu(0.3s)').get_text()
将仅返回类为Trsdu(0.3s)
的第一个元素的文本
使用:
googclose=googsoupsoup.find_all(class='Trsdu(0.3s)'
将使用类Trsdu(0.3s)
返回包含页面元素的数组
然后您可以迭代它们:
googsoupsoup中元素的查找所有元素(class='Trsdu(0.3s)':
打印元素。获取文本()
此函数:
googclose=googsoup.find(class='Trsdu(0.3s)').get_text()
将仅返回类为Trsdu(0.3s)
的第一个元素的文本
使用:
googclose=googsoupsoup.find_all(class='Trsdu(0.3s)'
将使用类Trsdu(0.3s)
返回包含页面元素的数组
然后您可以迭代它们:
googsoupsoup中元素的查找所有元素(class='Trsdu(0.3s)':
print element.get_text()
如果只需要Open
和Previous Close
的值,可以使用findAll
并获取结果中的前两项
googclose, googopen = googsoup.findAll('span', class_='Trsdu(0.3s) ')[:2]
googclose = googclose.get_text()
googopen = googopen.get_text()
print(googclose, googopen)
>>> 172.17 171.69
或者您可以更高一级,并使用数据测试
属性基于父级td
查找值
googclose = googsoup.find('td', attrs={'data-test': 'PREV_CLOSE-value'}).get_text()
googopen = googsoup.find('td', attrs={'data-test': 'OPEN-value'}).get_text()
print(googclose, googopen)
>>> 172.17 171.69
如果只需要
Open
和Previous Close
的值,可以使用findAll
并获取结果中的前两项
googclose, googopen = googsoup.findAll('span', class_='Trsdu(0.3s) ')[:2]
googclose = googclose.get_text()
googopen = googopen.get_text()
print(googclose, googopen)
>>> 172.17 171.69
或者您可以更高一级,并使用数据测试
属性基于父级td
查找值
googclose = googsoup.find('td', attrs={'data-test': 'PREV_CLOSE-value'}).get_text()
googopen = googsoup.find('td', attrs={'data-test': 'OPEN-value'}).get_text()
print(googclose, googopen)
>>> 172.17 171.69
如果使用Chrome浏览器,您可以右键-单击您想了解更多信息的项目,然后从结果菜单中选择Inspect。浏览器将显示与OPEN关联的数字的类似内容 请注意,不仅有class属性,还有
datareactid
属性可能会起作用。事实上,如果你也检查接近数字,你会发现,就像我一样,它的属性是不同的
这建议使用以下代码
>>> import requests
>>> import bs4
>>> soup = bs4.BeautifulSoup(page, 'lxml')
>>> soup.findAll('span', attrs={'data-reactid': '42'})[0].text
'172.17'
>>> soup.findAll('span', attrs={'data-reactid': '48'})[0].text
'171.69'
如果使用Chrome浏览器,您可以右键-单击您想了解更多信息的项目,然后从结果菜单中选择Inspect。浏览器将显示与OPEN关联的数字的类似内容 请注意,不仅有class属性,还有
datareactid
属性可能会起作用。事实上,如果你也检查接近数字,你会发现,就像我一样,它的属性是不同的
这建议使用以下代码
>>> import requests
>>> import bs4
>>> soup = bs4.BeautifulSoup(page, 'lxml')
>>> soup.findAll('span', attrs={'data-reactid': '42'})[0].text
'172.17'
>>> soup.findAll('span', attrs={'data-reactid': '48'})[0].text
'171.69'
如果这是您想要的,请查看以下内容:
import requests
from bs4 import BeautifulSoup
goog = requests.get('https://finance.yahoo.com/quote/FB?p=FB')
googsoup = BeautifulSoup(goog.text, 'html.parser')
googclose = googsoup.select("span[data-reactid=42]")[1].text
googopen = googsoup.select("span[data-reactid=48]")[0].text
print("Close: {}\nOpen: {}".format(googclose,googopen))
结果:
Close: 172.17
Open: 171.69
如果这是您想要的,请查看以下内容:
import requests
from bs4 import BeautifulSoup
goog = requests.get('https://finance.yahoo.com/quote/FB?p=FB')
googsoup = BeautifulSoup(goog.text, 'html.parser')
googclose = googsoup.select("span[data-reactid=42]")[1].text
googopen = googsoup.select("span[data-reactid=48]")[0].text
print("Close: {}\nOpen: {}".format(googclose,googopen))
结果:
Close: 172.17
Open: 171.69
该页面中有两个
close
。1.前收盘价2。最后。如果您在上一次收盘后,则我上面的代码是正确的,否则如果您想在收盘时获得,则只需将索引更改为0即可。就这样。那页有两个close
。1.前收盘价2。最后。如果您在上一次收盘后
,则我上面的代码是正确的,否则如果您想在收盘时获得,则只需将索引更改为0即可。就这样。