Вы просто перезаписываете один и тот же выходной CSV-файл для всех страниц, вы можете вызвать .to_csv()
в режиме «добавления», чтобы добавить новые данные в конец существующего файла:
df.to_csv('example31.csv', mode='a', encoding="utf-8", header=False)
Или, еще лучше, собрать заголовки в список заголовков, а затем сбросить их в CSV один раз:
#start looping through all pages
titles = []
for item in webpages:
headers = {'User-Agent': 'Mozilla/5.0'}
data = r.get(item, headers=headers)
page_soup = soup(data.text, 'html.parser')
#find targeted info and put them into a list to be exported to a csv file via pandas
title_list = [title.text for title in page_soup.find_all('div', {'class':'field field-name-node-title'})]
titles += [el.replace('\n', '') for el in title_list]
# export to csv file via pandas
dataset = [{'Title': title} for title in titles]
df = pandas.DataFrame(dataset)
df.index.name = 'ArticleID'
df.to_csv('example31.csv', encoding="utf-8")