我正试图从Binance的主页上拉价,BeautifulSoup为我返回空元素。 Binance的主页位于https://www.binance.com/en/,我尝试从中获取文本的有趣块是:
<div class="sc-62mpio-0-sc-iAyFgw iQwJlO" color="#999"><span>"/" "$" "35.49"</span></div>
在Binance的主页上有一张桌子,其中一列标题为“最后价格”。在最后一个价格旁边是最近的美元价格,其价格为淡灰色,我正尝试拉每个价格。到目前为止,这是我的代码。
def grabPrices():
page = requests.get("https://www.binance.com/en")
soup = BeautifulSoup(page.text, "lxml")
prices = soup.find_all("span", {"class": None})
print(prices)
但是输出只是一大堆“ –”标签。
答案 0 :(得分:2)
硒应该是从此Biniance页中获取所需表格内容的一种方法。以及Google Selenium的设置(有关更多信息,请下载驱动程序并将其放置在本地磁盘中,如果您是Chrome用户,请参见此下载链接chrome driver)。这是我用来访问您感兴趣的内容的代码:
from selenium import webdriver
from selenium.webdriver.support.ui import Select
import time
driver = webdriver.Chrome(executable_path=r'C:\chromedriver\chromedriver.exe')
time.sleep(3) # Allow time to launch the controlled web
driver.get('https://www.binance.com/en/')
time.sleep(3) # Allow time to load the page
sel = Selector(text=driver.page_source)
Table = sel.xpath('//*[@id="__next"]/div/main/div[4]/div/div[2]/div/div[2]/div/div[2]/div')
Table.extract() # This basically gives you all the content of the table, see follow screen shot (screen shot is truncated for display purpose)
然后,如果您进一步处理整个表内容,例如:
tb_rows = Table.xpath('.//div/a//div//div//span/text()').extract()
tb_rows # Then you will get follow screen shot
这时,结果缩小到您感兴趣的范围,但是请注意,lastprice的两个组成部分(数字/美元价格)存储在源页面的两个标记中,因此我们可以按照以下步骤进行合并一起到达目的地:
for n in range(0,len(tb_rows),2):
LastPrice = tb_rows[n] + tb_rows[n+1]
print(LastPrice) # For sure, other than print, you could store each element in a list
driver.quit() # don't forget to quit driver by the end
最终输出如下: