我试图从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)


但是输出只是一大堆“ –”标签。

最佳答案

Selenium应该是从此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)


python - BeautifulSoup返回空的span元素吗?-LMLPHP

然后,如果您使用以下方法进一步处理整个表的内容:

tb_rows = Table.xpath('.//div/a//div//div//span/text()').extract()
tb_rows # Then you will get follow screen shot


python - BeautifulSoup返回空的span元素吗?-LMLPHP

此时,结果将缩小到您感兴趣的范围,但是请注意,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


最终输出如下所示:

python - BeautifulSoup返回空的span元素吗?-LMLPHP

关于python - BeautifulSoup返回空的span元素吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56584436/

10-10 21:47