Python 网页抓取到.csv

Python 网页抓取到.csv,python,csv,web-scraping,beautifulsoup,export-to-csv,Python,Csv,Web Scraping,Beautifulsoup,Export To Csv,我对Python还是很陌生,如果这是一个愚蠢的问题,那么很抱歉。我一直在使用以下脚本从网站上抓取一些数据并导出到.csv文件: import requests from bs4 import BeautifulSoup import pandas as pd res = requests.get('https://gol.gg/teams/list/season-ALL/split-ALL/tournament-LCS%20Summer%202020/') soup = BeautifulS

我对Python还是很陌生,如果这是一个愚蠢的问题,那么很抱歉。我一直在使用以下脚本从网站上抓取一些数据并导出到.csv文件:

import requests
from bs4 import BeautifulSoup
import pandas as pd

res = requests.get('https://gol.gg/teams/list/season-ALL/split-ALL/tournament-LCS%20Summer%202020/')

soup = BeautifulSoup(res.text, 'html.parser')

table = soup.find("table", class_="table_list playerslist tablesaw trhover")

columns = [i.get_text(strip=True) for i in table.find("thead").find_all("th")]

data = []

table.find("thead").extract()

for tr in table.find_all("tr"):
    data.append([td.get_text(strip=True) for td in tr.find_all("td")])

df = pd.DataFrame(data, columns=columns)

df.to_csv("S10-NA-AVGs.csv", index=False)
我在尝试使用相同的脚本收集其他数据并导出到.csv时遇到问题。该网站是:

我知道数据在html代码中的布局是不同的,这就是我对它要获取的内容有点混淆的地方。它似乎是一个单独字段存储的地方,因此我尝试改变这一行:

columns = [i.get_text(strip=True) for i in table.find("thead").find_all("th")]
这就是我收到错误消息的地方:

AttributeError:“非类型”对象没有属性“查找”

我试着把“th”和“thead”改成几个不同的变体,但没有成功。
任何帮助都将不胜感激。

页面是否包含这些标签?您可以在出现错误的那一行放置一个断点,然后在IDE的监视区域中尝试多种方法,看看有什么和没有什么

您是否考虑过将其作为编写应用程序的一种方式?它有体面的内置功能和良好的教程在官方网站上。此外,您还可以将代码封装在类中,例如,使用自己的逻辑为每个网站创建不同的spider类。这样,如果您将代码划分为类和方法,而不是全部写入一个文件中,那么即使在开发过程中,您的代码也会更具可读性。

这是因为第二个网页中的“class”属性与第一个网页中的“class”属性不同

在针对第二个url运行脚本时,是否尝试将类名更改为
completestats tablesaw


soup.find()
在html页面中找不到您要求它查找的元素时,将返回None。的文档使用
pandas
完成所有工作怎么样,因为您已经在使用它了

import requests
import pandas as pd

res = requests.get('https://gol.gg/game/stats/25989/page-fullstats/')

df = pd.read_html(res.text, skiprows=[0])
df = pd.concat(df)
df.to_csv("data.csv", index=False)
print(df)

输出:

[                      Player   Huni Svenskeren  ...  Ryoma Cody Sun    Poome
0                       Role    TOP     JUNGLE  ...    MID      ADC  SUPPORT
1                      Kills      2          0  ...      5        4        2
2                     Deaths      5          6  ...      2        2        1
3                    Assists      3          5  ...     10       12       16
4                        KDA      1        0.8  ...    7.5        8       18
5                         CS    186        136  ...    210      217       27
6        CS in Team's Jungle      4         80  ...      8        8        0
7         CS in Enemy Jungle      0          0  ...      0        6        0
8                        CSM    7.6        5.5  ...    8.6      8.8      1.1
9                      Golds   8723       7059  ...  11074    11275     7255
10                       GPM    355        288  ...    451      459      296
11                     GOLD%  21.9%      17.7%  ...  20.5%    20.8%    13.4%
12              Vision Score     14         24  ...     27       37       52
13              Wards placed      7          7  ...      9        9       34
14           Wards destroyed      4          3  ...      3       10        5
15   Control Wards Purchased      0          6  ...      7        2       10
16                      VSPM   0.57       0.98  ...    1.1     1.51     2.12
17                       WPM   0.29       0.29  ...   0.37     0.37     1.38
18                      VWPM      0       0.24  ...   0.29     0.08     0.41
19                      WCPM   0.16       0.12  ...   0.12     0.41      0.2
20                       VS%     9%      15.4%  ...  15.6%    21.4%    30.1%
21  Total damage to Champion  11637      11069  ...   9516    12053     3669
22           Physical Damage   6533       9367  ...    166    11214      604
23              Magic Damage   5104        395  ...   9340      755     3065
24               True Damage      0       1307  ...     10       84        0
25                       DPM    474        451  ...    388      491      149
26                      DMG%  24.1%      22.9%  ...  17.4%      22%     6.7%
27            K+A Per Minute    0.2        0.2  ...   0.61     0.65     0.73
28                       KP%  83.3%      83.3%  ...  65.2%    69.6%    78.3%
29                Solo kills    NaN        NaN  ...    NaN      NaN      NaN
30              Double kills      0          0  ...      1        2        0
31              Triple kills      0          0  ...      0        0        0
32              Quadra kills      0          0  ...      0        0        0
33               Penta kills      0          0  ...      0        0        0
34                     GD@15  -2492      -1117  ...    -21    -1272     -292
35                    CSD@15     -9        -27  ...    -29       -1       -6
36                    XPD@15  -1149      -1627  ...   -191     -287    -1322
37                   LVLD@15     -1         -1  ...      0        0       -1
38   Damage dealt to turrets      0        883  ...   1557     4582      717
39                Total heal   1010       5737  ...   2600     2343     3120
40     Damage self mitigated  16638      10704  ...  16506     5476    11927
41         Time ccing others     26         16  ...     18       26       11
42        Total damage taken  18869      19320  ...  14264    11844     9137
这将为您提供一个漂亮的
.csv
文件:

奖励:该代码还可用于其他URL:

import requests
import pandas as pd

res = requests.get('https://gol.gg/teams/list/season-ALL/split-ALL/tournament-LCS%20Summer%202020/')

df = pd.read_html(res.text, skiprows=[0])
df = pd.concat(df)
print(df)

印刷品:

        100 Thieves  S10  NA  18  38.9%  ...  33.3  1976  3.0  1.23  1.35
0               CLG  S10 NaN  19  26.3%  ...  32.6  1790  3.3  1.21  1.30
1            Cloud9  S10 NaN  18  72.2%  ...  33.4  1971  3.0  1.12  1.30
2          Dignitas  S10 NaN  19  31.6%  ...  32.7  1590  3.1  1.27  1.33
3     Evil Geniuses  S10 NaN  18  44.4%  ...  32.2  1920  3.3  1.39  1.41
4          FlyQuest  S10 NaN  18  66.7%  ...  32.8  1856  3.3  1.21  1.77
5  Golden Guardians  S10 NaN  18  50.0%  ...  33.8  1992  3.4  1.26  1.53
6         Immortals  S10 NaN  18  22.2%  ...  31.1  1717  3.3  1.35  1.46
7       Team Liquid  S10 NaN  18  83.3%  ...  33.6  1784  3.4  1.24  1.51
8               TSM  S10 NaN  18  66.7%  ...  32.5  1741  3.2  1.33  1.33

这是一个极为常见的问题,可能是在运行for循环时,
变量未定义。直到现在我还没有运行您的代码,但是在for循环的某个迭代中,var
的类型肯定是
None
哦,这太棒了!那太完美了。这样做肯定更有意义,而且看起来也不错。非常感谢您的回复,非常感谢您的指导。不客气,如果您觉得我的答案有用,请投票并/或接受。我不知道答案有一个接受按钮。这个网站还是新的。刚刚接受了。再次感谢你!