Web抓取,读取数据帧并导出到csv

时间:2020-03-24 04:04:04

标签: python pandas csv web-scraping

目标是刮掉pokemonDB,创建一个Pokemon数据的DataFrame; (数字,名称,主要类型和次要类型),将这两种类型分成各自的行,然后将其导出为CSV文件。

我一直在访问“ dex”数据框,尤其是列的内容。我是否正确使用“ .loc”?

然后将每种类型的两种类型分开。我知道我必须使用空格“”作为分隔符,但不确定如何使用。我是熊猫新手。

这就是我所拥有的:

import pandas as pd
import requests

page = requests.get("https://pokemondb.net/pokedex/all")

dex = pd.read_html(page.text, attrs = {'id': 'pokedex'}, index_col = '#')

column_label_list =  (list(dex[0].columns))

NationalNo = column_label_list[0];
Name = column_label_list[1];
Type = column_label_list[2];


numbers_list = dex.loc[ "#"]
names_list = dex.loc[ "Name"]
types1_list = dex.loc[ "Type"]


pokemon_list = pd.DataFrame(
    {
      NationalNo: numbers_list,
      Name: names_list,
      Type: types1_list,
      #'Type2': types2_list,
     })

print(pokemon_list)
#pokemon_list.to_csv('output.csv',encoding='utf-8-sig')


结果应如下所示:

output.csv

# | Name    | Type1 | Type2 |
__|_________|_______|_______|
0 |Bulbasaur|Grass  |Poison |
__|_________|_______|_______|
.
.
.
etc...

我希望我要完成的工作有意义。

1 个答案:

答案 0 :(得分:0)

dex是该HTML上存在的所有个表的数组,因为只有一个表,所以选择第一个表,则无需将它们映射到数据框而且,因为它已经是一个数据框,所以直接将其导出即可。请考虑在下面使用此代码:

import pandas as pd
import requests

page = requests.get("https://pokemondb.net/pokedex/all")

dex = pd.read_html(page.text, attrs = {'id': 'pokedex'}, index_col = '#')

dex[0].to_csv("output.csv", encoding='utf-8')