我从以下格式的HTML表中抓取数据:
<table>
<tr>
<th>Name</th>
<th>Date</th>
<th>Number</th>
<th>Address</th>
</tr>
<tr> 1
<td> Name-1 </td>
<td> Date-1 </td>
<td> Number-1 </td>
<td> Address-1 </td>
</tr>
<tr> 2
<td> Name-2 </td>
<td> Date-2 </td>
<td> Number-2 </td>
<td> Address-2 </td>
</tr>
</table>它是该页面上唯一的表格。我想存储每个TD标签和它对应的TH标签信息,以形成一个列表,然后最终将其保存到CSV。实际的信息不是用-number保存的,这只是为了说明。数据有数百个表行,所有行在表中都具有以这种方式格式化的同一组数据。
基本上,我希望'name‘是每个TR行中的第一个TD单元格,日期是第二个,依此类推。
我似乎找不到一种使用Python3和BeautifulSoup4的方法,我知道有一种方法,我只是太新了。
谢谢你们的帮助,我在学习的过程中学到了很多。
发布于 2016-10-25 00:34:23
假设数据是一致的,下面的基本示例应该有效:
table_rows = soup.find_all("tr") #list of all <tr> tags
for row in table_rows:
cells = row.find_all("td") #list of all <td> tags within a row
if not cells: #skip rows without td elements
continue
name, date, number, address = cells #unpack list of <td> tags into separate variables发布于 2022-02-28 21:07:03
我也有类似的问题。sytech的脚本正在运行。例如,一个有100行的表,我的代码将首先显示第15行,而不是html中出现的第一行,然后显示第16行,行17...row 100,第1行,第2行。使用上面的Clive代码,我将获得以下结果:
[<td> Name-15 </td>, <td> Date-15 </td>,<td> Number-15 </td>, <td> Address-15 </td>] [<td> Name-16 </td>, <td> Date-16 </td>,<td> Number-16 </td>, <td> Address-16 </td>] [<td> Name-16 </td>, <td> Date-16 </td>,<td> Number-16 </td>, <td> Address-16 </td>] etc... [<td> Name-100 </td>, <td> Date-100 </td>,<td> Number-100 </td>, <td> Address-100 </td>] [<td> Name-1 </td>, <td> Date-1 </td>,<td> Number-1 </td>, <td> Address-1 </td>]
你知道为什么不从第一行开始吗?如果这篇文章格式不好,我深表歉意,并感谢您的帮助!
https://stackoverflow.com/questions/40222800
复制相似问题