这是我的代码:
soup = BeautifulSoup(browser.page_source, 'html.parser')
results = soup.find_all('div', attrs={'class': 'col-xs-6 col-sm-6 col-md-3 search-item '})
records = []
for result in results:
name = result.find('p', attrs={'class':'small mb20 colorgreen'})
city = result.find('span', attrs={'class':'map-item-city block mb0 colorgreen'}).text
records.append((name, city))
print (name, city)
df = pd.DataFrame(records, columns = ['name', 'city'])
df.to_csv('gettin.csv', index=False, mode = 'a', encoding='utf-8')
在生成的csv文件中,我有两列(名称,城市)。第一个值与其他记录一样多次重复。
Name City
Oddział w Warszawie ul. Wodzireja 55, 59-220 Warszawa
0 1
Oddział w Warszawie ul. Wodzireja 55, 59-220 Warszawa
Oddział w Warszawie ul. Cholewinka 4, 59-220 Warszawa
0 1
Oddział w Warszawie ul. Wodzireja 55, 59-220 Warszawa
Oddział w Warszawie ul. Cholewinka 4, 59-220 Warszawa
Oddział w Warszawie ul. Waclawa 5, 59-220 Warszawa
0 1
Oddział w Warszawie ul. Wodzireja 55, 59-220 Warszawa
Oddział w Warszawie ul. Cholewinka 4, 59-220 Warszawa
Oddział w Warszawie ul. Waclawa 5, 59-220 Warszawa
Oddział w Warszawie ul. Balwanka 5, 59-220 Warszawa
如何在没有重复的情况下获得结果?
Name City
Oddział w Warszawie ul. Wodzireja 55, 59-220 Warszawa
Oddział w Warszawie ul. Cholewinka 4, 59-220 Warszawa
Oddział w Warszawie ul. Waclawa 5, 59-220 Warszawa
Oddział w Warszawie ul. Balwanka 5, 59-220 Warszawa
答案 0 :(得分:1)
我认为您需要在df
之外创建loop
并添加drop_duplicates
:
records = []
for result in results:
name = result.find('p', attrs={'class':'small mb20 colorgreen'})
city = result.find('span', attrs={'class':'map-item-city block mb0 colorgreen'}).text
records.append((name, city))
print (name, city)
df = pd.DataFrame(records, columns = ['name', 'city']).drop_duplicates()
df.to_csv('gettin.csv', index=False, encoding='utf-8')