簡體   English   中英

使用 Python 3 和 Beautiful Soup 4 刪除 HTML 標簽並將抓取的數據保存到 CSV 文件

[英]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)

以下是打印命令返回內容的示例:

&amp;nbsp                             </td>, <td class="rel119 carrier">
&amp;nbsp                             </td>], [<td class="rel46 carrier">
                                    0.00
                                </td>, <td class="rel47 carrier">
                                    0.00
                                </td>, <td class="rel48 carrier">
                                    0.00

該表包含每月記錄的大約 25 個變量(行)(列)。 我相信&amp;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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM