网站上的网页抓取有多个页面结果

问题描述 投票:1回答:2

我希望从一个返回多页结果的网站上选择所有网页的结果表。

我尝试了下面的代码: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页结果的记录。但是我无法运行它,即使经过几个小时的运行也不会停止运行

python pandas web-scraping
2个回答
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是右侧带箭头的列。


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)
© www.soinside.com 2019 - 2024. All rights reserved.