Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python从带有javascript的网页中获取表内容?_Javascript_Python_Selenium Webdriver_Web Scraping - Fatal编程技术网

如何使用python从带有javascript的网页中获取表内容?

如何使用python从带有javascript的网页中获取表内容?,javascript,python,selenium-webdriver,web-scraping,Javascript,Python,Selenium Webdriver,Web Scraping,我喜欢从这里抓取表格内容。下面是我的代码,我得到了NaN(没有数据)。为什么这些数字没有出现?如何获取包含相应数据的表?谢谢 您可以从api获得一个很好的json格式: import requests import pandas as pd url = 'https://api.blockchain.info/stats' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.3

我喜欢从这里抓取表格内容。下面是我的代码,我得到了NaN(没有数据)。为什么这些数字没有出现?如何获取包含相应数据的表?谢谢


您可以从api获得一个很好的json格式:

import requests
import pandas as pd

url = 'https://api.blockchain.info/stats'

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
params = {'cors': 'true'}

data = requests.get(url, headers=headers, params=params).json()

# if you want it as a table
df = pd.DataFrame(data.items())
选项2:

                    0                   1                   2   3
0         Blocks Mined                 150                 150 NaN
1  Time Between Blocks        9.05 minutes        9.05 minutes NaN
2       Bitcoins Mined  1,875.00000000 BTC  1,875.00000000 BTC NaN
让页面完全呈现。在Selenium中使用
wait
有一种更好的方法,但只需在那里快速抛出5秒钟的等待时间即可显示:

from selenium import webdriver
import pandas as pd
import time

url = 'https://www.blockchain.com/stats'


browser = webdriver.Chrome('C:/chromedriver_win32/chromedriver.exe')
browser.get(url)
time.sleep(5)

dfs = pd.read_html(browser.page_source)
print(dfs[0])

browser.close()
输出:

                    0                   1                   2   3
0         Blocks Mined                 150                 150 NaN
1  Time Between Blocks        9.05 minutes        9.05 minutes NaN
2       Bitcoins Mined  1,875.00000000 BTC  1,875.00000000 BTC NaN

page\u source
将为您提供与请求相同的内容,即任何js执行之前的html。选项1:它显示ValueError:DataFrame构造函数未正确调用!选项2:如果我们使用等待,为什么会显示?选项1。您使用的熊猫是什么版本的?选项2。该页面是动态的,因此在将请求发送到url后会呈现该表。您只需等待一两秒钟,该表就可以获得数据。3.7版。顺便说一句,我想我被选项1挡住了。它说“ConnectionError:HTTPSConnectionPool(host='api.blockchain.com',port=443):url超过了最大重试次数:/stats?cors=true(由NewConnectionError(':未能建立新连接:[Errno 11004]getaddrinfo Failed',)”这是Python 3.7。我想知道熊猫的事。这可能是一种可能性。或者你可能被其他方式阻止了。明天我会再看一次,但至少硒选项是有效的。