我使用这种方法在网络上抓取了表格的内容,现在我希望将其保存到 csv 文件中,但我不确定如何保存(这是针对课堂上的项目,所以我无法发布任何实际代码,因为我可能会被标记为抄袭,但我做了与示例完全相同的事情)。我是数据科学/Python 的新手,所以它可能不是最好的方法,但它是我可以弄清楚如何实际抓取数据的方法。谢谢!!
https://scrapfly.io/blog/how-to-scrape-tables-with-beautifulsoup/
from bs4 import BeautifulSoup
import requests
soup = BeautifulSoup(requests.get("https://www.w3schools.com/html/html_tables.asp").text)
# first we should find our table object:
table = soup.find('table', id="customers")
# then we can iterate through each row and extract either header or row values:
header = []
rows = []
for i, row in enumerate(table.find_all('tr')):
if i == 0:
header = [el.text.strip() for el in row.find_all('th')]
else:
rows.append([el.text.strip() for el in row.find_all('td')])
print(header)
['Company', 'Contact', 'Country']
for row in rows:
print(row)
['Alfreds Futterkiste', 'Maria Anders', 'Germany']
['Centro comercial Moctezuma', 'Francisco Chang', 'Mexico']
['Ernst Handel', 'Roland Mendel', 'Austria']
['Island Trading', 'Helen Bennett', 'UK']
['Laughing Bacchus Winecellars', 'Yoshi Tannamuri', 'Canada']
['Magazzini Alimentari Riuniti', 'Giovanni Rovelli', 'Italy']
Python 有一个很棒的内置 CSV 库。这是 the writer 对象,它有一个
writerow()
函数,可以处理您为其输入的内容:字符串列表。保存到 CSV 文件看起来与您在上面编写的打印语句非常接近。
例如,将其添加到脚本末尾:
import csv
with open('contacts.csv', 'w') as csvfile:
contact_writer = csv.writer(csvfile)
contact_writer.writerow(header)
for row in rows:
contact_writer.writerow(row)
writer()
接受很多选项来帮助微调输出。