尝试从 Python 的页面中抓取并将此信息放入 csv 中,仅获取列表最后一个元素的结果
Trying to scrape from pages with Python and put this info into a csv, getting only the results for the last element of the list
我正在尝试使用 Python 从多个 Ballotpedia 页面中抓取并将此信息放入 csv 中,但我只获得了列表最后一个元素的结果。这是我的代码:
import pandas as pd
list = ['https://ballotpedia.org/Alaska_Supreme_Court',
'https://ballotpedia.org/Utah_Supreme_Court']
for page in list:
frame = pd.read_html(page,attrs={"class":"wikitable
sortable jquery-tablesorter"})[0]
frame.drop("Appointed By", axis=1, inplace=True)
frame.to_csv("18-TEST.csv", index=False)
我一直在尝试添加和删除代码最后一行的部分内容,但问题仍然存在。列表的第一个元素必须添加到 csv 中,但它们会被第二个元素替换。我怎样才能让两者同时出现在 csv 上?非常感谢!
代码存在三个问题
frame.to_csv
在循环之外所以只在最后一帧执行一次
- 即使它在里面它也会在每次迭代时覆盖同一个文件
'18-TEST.csv'
list
是保留关键字,您不应将其用作变量名
尝试这样的事情
import pandas as pd
page_list = ['https://ballotpedia.org/Alaska_Supreme_Court',
'https://ballotpedia.org/Utah_Supreme_Court']
for n,page in enumerate(page_list):
frame = pd.read_html(page,attrs={"class":"wikitable
sortable jquery-tablesorter"})[0]
frame.drop("Appointed By", axis=1, inplace=True)
frame.to_csv(f"18-TEST-{n}.csv", index=False)
这会将每个页面保存在不同的 csv '18-TEST-0.csv', '18-TEST-1.csv', ...
每次迭代都会重置您的 frame
变量,因此它会被丢弃。您必须将所有条目累积在一个数据框中,才能将其全部保存为一个 csv。另外,就像 piterbarg 提到的,list
是 Python 中的保留字。这并没有破坏您的代码,但这是一种不好的做法 ;)。
import pandas as pd
# better variable name "pages"
pages = ['https://ballotpedia.org/Alaska_Supreme_Court',
'https://ballotpedia.org/Utah_Supreme_Court']
# dataframe outside the loop to accumulate everything in
judges = pd.DataFrame()
for page in pages:
frame = pd.read_html(page, attrs={'class': 'wikitable sortable jquery-tablesorter'})[0]
frame.drop('Appointed By', axis=1, inplace=True)
# add this particular page's data to the main dataframe
judges = judges.append(frame, ignore_index=True)
# ignore_index ignores the indices from the frame we're adding,
# so the indices in the judges frame are continuous
# after the loop, save the complete dataframe to a csv
judges.to_csv('18-TEST.csv', index=False)
这会将所有内容保存在一个 csv 中。试试看!
我正在尝试使用 Python 从多个 Ballotpedia 页面中抓取并将此信息放入 csv 中,但我只获得了列表最后一个元素的结果。这是我的代码:
import pandas as pd
list = ['https://ballotpedia.org/Alaska_Supreme_Court',
'https://ballotpedia.org/Utah_Supreme_Court']
for page in list:
frame = pd.read_html(page,attrs={"class":"wikitable
sortable jquery-tablesorter"})[0]
frame.drop("Appointed By", axis=1, inplace=True)
frame.to_csv("18-TEST.csv", index=False)
我一直在尝试添加和删除代码最后一行的部分内容,但问题仍然存在。列表的第一个元素必须添加到 csv 中,但它们会被第二个元素替换。我怎样才能让两者同时出现在 csv 上?非常感谢!
代码存在三个问题
frame.to_csv
在循环之外所以只在最后一帧执行一次- 即使它在里面它也会在每次迭代时覆盖同一个文件
'18-TEST.csv'
list
是保留关键字,您不应将其用作变量名
尝试这样的事情
import pandas as pd
page_list = ['https://ballotpedia.org/Alaska_Supreme_Court',
'https://ballotpedia.org/Utah_Supreme_Court']
for n,page in enumerate(page_list):
frame = pd.read_html(page,attrs={"class":"wikitable
sortable jquery-tablesorter"})[0]
frame.drop("Appointed By", axis=1, inplace=True)
frame.to_csv(f"18-TEST-{n}.csv", index=False)
这会将每个页面保存在不同的 csv '18-TEST-0.csv', '18-TEST-1.csv', ...
每次迭代都会重置您的 frame
变量,因此它会被丢弃。您必须将所有条目累积在一个数据框中,才能将其全部保存为一个 csv。另外,就像 piterbarg 提到的,list
是 Python 中的保留字。这并没有破坏您的代码,但这是一种不好的做法 ;)。
import pandas as pd
# better variable name "pages"
pages = ['https://ballotpedia.org/Alaska_Supreme_Court',
'https://ballotpedia.org/Utah_Supreme_Court']
# dataframe outside the loop to accumulate everything in
judges = pd.DataFrame()
for page in pages:
frame = pd.read_html(page, attrs={'class': 'wikitable sortable jquery-tablesorter'})[0]
frame.drop('Appointed By', axis=1, inplace=True)
# add this particular page's data to the main dataframe
judges = judges.append(frame, ignore_index=True)
# ignore_index ignores the indices from the frame we're adding,
# so the indices in the judges frame are continuous
# after the loop, save the complete dataframe to a csv
judges.to_csv('18-TEST.csv', index=False)
这会将所有内容保存在一个 csv 中。试试看!