【发布时间】:2018-12-18 13:22:27
【问题描述】:
所以我有 HTML 表格,我在其中解析了数据,并在控制台中打印出来。
HTML 代码:
<table class='hdr'><tbody>
<tr><td class='hdr_name'><b>Station ID: </b></td><td class='hdr_value'><b>TUA1-W03281</b></td></tr>
<tr><td class='hdr_name'><b>Serial Number: </b></td><td class='hdr_value'><b>C737201011071281 Nest Number : RFID = N1111003 TS = N0000001</b></td></tr>
<tr><td class='hdr_name'><b>Date: </b></td><td class='hdr_value'><b>Wednesday, July 04, 2018</b></td></tr>
<tr><td class='hdr_name'><b>Time: </b></td><td class='hdr_value'><b>9:26:25 AM</b></td></tr>
<tr><td class='hdr_name'><b>Operator: </b></td><td class='hdr_value'><b>No operator logged in</b></td></tr>
<tr><td class='hdr_name'><b>Execution Time: </b></td><td class='hdr_value'><b>118.3051362 seconds</b></td></tr>
<tr><td class='hdr_name'><b>Number of Results: </b></td><td class='hdr_value'><b>169</b></td></tr>
<tr><td class='hdr_name'><b>UUT Result: </b></td><td class='hdr_value'><b><span style="color:#008000;">Passed</span></b></td></tr>
</tbody></table>
我的代码来抓取数据:
from datetime import datetime
from bs4 import BeautifulSoup
testURL = open('Report - C737201011071281 - 04-07-18-92626 AM.128144458.html')
soup = BeautifulSoup(testURL, "html.parser")
'Station ID'
station = soup.find("td", text="Station ID: ").find_next_sibling("td").text
print("\nStation ID: " + station)
'Serial Number'
serialNumber = soup.find("td", text="Serial Number: ").find_next_sibling("td").text
cNumber = serialNumber[0:15]
print("Serial Number: " + cNumber)
'Date'
date = soup.find("td", text="Date: ").find_next_sibling("td").text
datetime_object = datetime.strptime(date, '%A, %B %d, %Y')
print("Date: " + datetime_object.strftime('%Y-%m-%d'))
'Time'
time = soup.find("td", text="Time: ").find_next_sibling("td").text
time_object = datetime.strptime(time, '%I:%M:%S AM')
print("Time: " + time_object.strftime('%H:%M:%S'))
'Result'
result = soup.find("td", text="UUT Result: ").find_next_sibling("td").text
print("UUT Result: " + result)
稍后在 HTML 中使用的表格没有类或 id,我想要做的是能够遍历每一行,直到找到包含“Focus”一词的行。找到这一行后,我想遍历该行下方的每一行,直到到达其中包含“结果”一词的行。
下面是关于如何创建表格的 HTML:
<tr><td class='label' colspan='2' style="border-color:#000000;background-color:#FFFFFF;"> Focus:</td>
</tr>
<tr><td class='label' style="border-color:#000000;background-color:#FFFFFF;"> Centre_Score:</td>
<td class='value' style="border-color:#000000;background-color:#32FFFF;"><span style='white-space:nowrap;'>0.08565902709961</span></td></tr>
<tr><td class='label' style="border-color:#000000;background-color:#FFFFFF;"> Top_Left_Score:</td>
<td class='value' style="border-color:#000000;background-color:#32FFFF;"><span style='white-space:nowrap;'>0.06830544769764</span></td></tr>
<tr><td class='label' style="border-color:#000000;background-color:#FFFFFF;"> Top_Right_Score:</td>
<td class='value' style="border-color:#000000;background-color:#32FFFF;"><span style='white-space:nowrap;'>0.06978666782379</span></td></tr>
<tr><td class='label' style="border-color:#000000;background-color:#FFFFFF;"> Bottom_Right_Score:</td>
<td class='value' style="border-color:#000000;background-color:#32FFFF;"><span style='white-space:nowrap;'>0.06947886943817</span></td></tr>
<tr><td class='label' style="border-color:#000000;background-color:#FFFFFF;"> Bottom_Left_Score:</td>
<td class='value' style="border-color:#000000;background-color:#32FFFF;"><span style='white-space:nowrap;'>0.07671363651752</span></td></tr>
<tr><td class='label' style="border-color:#000000;background-color:#FFFFFF;"> Result:</td>
<td class='value' style="border-color:#000000;background-color:#32FFFF;"><span style='white-space:nowrap;'>1</span></td></tr>
您如何遍历具有文本“Focus:”的行之后的每一行,并将每个参数的值存储在名为“Focus Results”的数组中。 我是 Python 新手,如果有任何反馈,尤其是对我创建的 .py 脚本,我将不胜感激。
【问题讨论】:
标签: python python-3.x web-scraping beautifulsoup html-parsing