1
我是第一次使用python(和編程)並使用BeautifulSoup
。將html錶轉換爲字典而不會丟失結構
我試圖找到解析HTML中的表格內容並將其轉換爲字典的最佳方式 - 理想情況下以最脆弱的方式。
這裏是我試圖解析的HTML的一個例子(我已經把文本的鍵值數字放到了我想要提取的地方)。
<div class="tablename">
<table border="0" cellpadding="0" cellspacing="0" style="border: 1px solid #dddddd; border-collapse: collapse; font-family: Arial, Helvetica, sans-serif; font-size: 14px; margin: 0; padding: 0; width: 100%">
<thead>
<tr>
<th colspan="4" style="background-color: #000; border: 1px solid #616161; color: #ffffff; font-size: 14px; font-weight: bold; line-height: 20px; padding: 14px 20px 12px 20px; text-align: left">Some text not needed</th>
</tr>
</thead>
<tbody>
<tr>
<td style="width: 20px"> </td>
<td style="border-bottom: 1px solid #dddddd; color: #666666; font-size: 14px; line-height: 20px; padding: 11px 20px 10px 0; text-align: left; width: 42.5%; vertical-align: middle">Key 1</td>
<td style="border-bottom: 1px solid #dddddd; color: #000; font-size: 14px; line-height: 20px; padding: 11px 0 10px 0; text-align: left; vertical-align: middle">Value 1</td>
<td style="width: 20px"> </td>
</tr>
<tr>
<td> </td>
<td style="border-bottom: 1px solid #dddddd; color: #666666; font-size: 14px; line-height: 20px; padding: 11px 20px 10px 0; text-align: left; vertical-align: middle">Key 2</td>
<td style="border-bottom: 1px solid #dddddd; color: #000; font-size: 14px; line-height: 20px; padding: 11px 0 10px 0; text-align: left; vertical-align: middle">Value 2</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td style="border-bottom: 1px solid #dddddd; color: #666666; font-size: 14px; line-height: 20px; padding: 11px 20px 10px 0; text-align: left; vertical-align: middle">Key 3</td>
<td style="border-bottom: 1px solid #dddddd; color: #000; font-size: 14px; line-height: 20px; padding: 11px 0 10px 0; text-align: left; vertical-align: middle">Value 3</td>
<td> </td>
</tr>
<tr>
和代碼我使用:
import requests
from bs4 import BeautifulSoup
html = requests.get('https://examplewebaddress.com')
soup = BeautifulSoup(html.text)
print(soup.tbody.text)
然後我可以遍歷所有的soup.tbody.text
字符串分割到這個鍵值對。但這似乎不是一個好方法,我似乎通過將表格轉換爲字符串而丟失了表格的結構,然後再將其重新構建到字典中。
有沒有更直接的方法來解析表BeautifulSoup
(或更適合的東西)到一個字典,然後我可以使用?
感謝實際數據在表格第12行內有一個小標題,然後是另外3行相關的數據。 – Yunti 2015-04-01 18:23:03
@Yunti這是一個完美的時機:) :) – alecxe 2015-04-01 18:25:17
抱歉沒有及時完成編輯:感謝實際數據在表格第12行內有一個小標題,然後是另外3行相關的數據。丟棄第12行副標題的最好方法是什麼?只要用切片[1:12]和[13:16]做兩次'結果'? – Yunti 2015-04-01 18:37:42