繁体   English   中英

网页抓取、读取数据帧和导出到 csv

[英]Web scraping, reading data frames, and exporting to csv

目标是抓取 pokemonDB,创建一个 Pokemon 数据的 DataFrame; (Number、Name、Primary type、secondary type),将两种类型分到各自的行中,导出为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...

我希望我想要完成的事情是有道理的。

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')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM