我正在嘗試從投資網站上抓取資料。除了表頭之外,我的代碼正在作業。我的“列”變數的名稱為:data-col-name =“abc”,但我不知道如何將它們提取為 column_names。
table_rows = soup.find("tbody").find_all("tr")
table = []
for i in table_rows:
td = i.find_all("td")
row = [cell.string for cell in td]
table.append(row)
columns = soup.find("thead").find_all("th")
column_names =
df_temp = pd.DataFrame(data=table, columns=column_names)
df_dji = df_dji.append(df_temp)
uj5u.com熱心網友回復:
你必須使用.text而不是.string
columns = soup.find("thead").find_all("th")
#print(columns)
column_names = [cell.text for cell in columns]
print(column_names)
或使用.get_text()甚至.get_text(strip=True)
column_names = [cell.get_text() for cell in columns]
print(column_names)
官方檔案顯示.string(.text在新版本非官方的方法,但可能是在舊版本的官方語言),但這里.string不作業-也許是因為有另一個物件<span>內<th>。并get_text()從所有元素中獲取所有字串th并創建一個字串。
編輯:
如果你想獲得價值形式data-col-name=然后使用
cell['data-col-name']cell.get('data-col-name')cell.attrs['data-col-name']cell.attrs.get('data-col-name')
(與cell['id']或相同cell['class'])
column_names = [cell['data-col-name'] for cell in columns]
column_names = [cell.get('data-col-name') for cell in columns]
# etc.
attrs是正常的dictionary,所以你可以使用attrs.get(key, default_value),attrs.keys(),attrs.items(),attrs.values()或使用像字典for-loop。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/361654.html
上一篇:如何使用硒從網站上抓取資料
