![](/img/trans.png)
[英]Issues with outputting the scraped data to a csv file using python and beautiful soup
[英]Remove HTML tags and save scraped data to CSV file using Python 3 and Beautiful Soup 4
我正在嘗試從網頁上的表格中抓取數據,然后使用 Python 3 和 Beautiful Soup 4 將其保存到 CSV 文件中。我已經能夠提取數據,但無法刪除周圍的標簽數據或找到將其保存到 CSV 文件的方法。 我梳理了之前提出的問題並嘗試應用這些方法,但我仍然無法解決這個問題。
這是我的腳本:
import csv
import pandas as pd
import requests
from bs4 import BeautifulSoup
url="enter url here"
r=requests.get(url)
soup=BeautifulSoup(r.content,"lxml")
table=soup.find("table", attrs={"class":"smsEvents"})
list_rows=[]
for row in table.find_all('tr'):
list_cells=[]
for cell in row.find_all('td'):
list_cells.append(cell)
list_rows.append(list_cells)
print(list_rows)
以下是打印命令返回內容的示例:
&nbsp </td>, <td class="rel119 carrier">
&nbsp </td>], [<td class="rel46 carrier">
0.00
</td>, <td class="rel47 carrier">
0.00
</td>, <td class="rel48 carrier">
0.00
該表包含每月記錄的大約 25 個變量(行)(列)。 我相信&nbsp
條目對應於將變量分成不同類別的行。
理想情況下,我想刪除這些標簽,然后將輸出保存到 CSV 文件。 我對 python 和數據抓取非常陌生,因此非常感謝任何和所有幫助。
謝謝!
import csv
import pandas as pd
import requests
from bs4 import BeautifulSoup
url="https://ai.fmcsa.dot.gov/SMS/Carrier/1000196/History.aspx"
r=requests.get(url)
soup=BeautifulSoup(r.content,"lxml")
table=soup.find("table", attrs={"class":"smsEvents"})
with open('a.csv', 'w', newline='') as f:
writer = csv.writer(f)
for tr in table('tr'):
row = [t.get_text(strip=True) for t in tr(['td', 'th'])]
writer.writerow(row)
我建議在這里使用lxml
而不是 BeautifulSoup (直接。嘗試這樣的事情:
from lxml import html
res=requests.get(url)
node = html.fromstring(res.content)
cells = node.xpath('//table[@class="smsEvents"]/tr/td')
請注意,您可以使用完整的 xpath 而不是遍歷父表的每個子元素來獲取單元格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.