我希望从一个返回多页结果的网站中选择所有网页的结果表。
我尝试了以下代码:
enter code here
import pandas as pd
dfs = []
while i<27:
url = " "
dframe = pd.read_html(url.str(i), header=1)
dfs.append(dframe[0].dropna(thresh=3))
i=i+1
我希望dframe保存所有30页结果的记录。 但是我无法运行它,即使经过数小时的运行,它也永远不会停止运行
答案 0 :(得分:0)
import pandas as pd
import numpy as np
df2 = pd.DataFrame()
for i in np.arange(26):
url = "http://stats.espncricinfo.com/ci/engine/stats/index.html?class=2;page="+str(i)+";spanmin1=01+Jan+2007;spanval1=span;template=results;type=bowling"
df = pd.read_html(url)[2]
df2 = pd.concat([df2, df])
df2.drop(columns = 'Unnamed: 14', inplace = True)
这对我有用。当我浏览该网站时,我只有26页。我还研究了一个页面,您所查看的表是read_html返回的列表上的[2] df。未命名:14是最右边带有箭头的列。
答案 1 :(得分:0)
我已经从您的原始代码中添加并更改了一些内容,以使其正常工作。
import pandas as pd
dfs = []
i = 0
while i < 26:
url = (
"http://stats.espncricinfo.com/ci/engine/stats/index.html?class=2;page="
+ str(i)
+ ";spanmin1=01+Jan+2007;spanval1=span;template=results;type=bowling"
)
dframe = pd.read_html(url, attrs={"class": "engineTable"})
dfs.append(dframe[2].drop(columns="Unnamed: 14"))
i = i + 1
result = pd.concat(dfs)
print(result)