我正在尝试使用 BeautifulSoup 用 Python 解析 HTML,但我无法获得我需要的东西。
这是我想做的个人应用程序的一个小模块,它包含一个带有凭据的 Web 登录部分,一旦脚本登录到 Web,我需要解析一些信息以便管理和处理它。
登录后的 HTML 代码为:
<div class="widget_title clearfix">
<h2>Account Balance</h2>
</div>
<div class="widget_body">
<div class="widget_content">
<table class="simple">
<tr>
<td><a href="#" id="west1" title="Total earned daily">Daily Earnings</a></td>
<td style="text-align: right; width: 125px; color: #119911; font-weight: bold;">
150
</td>
</tr>
<tr>
<td><a href="#" id="west2" title="Total weekly earnings">Weekly Earnings</a></td>
<td style="text-align: right; border-bottom: 1px solid #000; color: #119911; font-weight: bold;">
500 </td>
</tr>
<tr>
<td><a href="#" id="west3" title="Total Monthly earnings">Monthly Earnings</a></td>
<td style="text-align: right; color: #119911; font-weight: bold;">
1500 </td>
</tr>
<tr>
<td><a href="#" id="west4" title="Total expenses">Total expended</a></td>
<td style="text-align: right; border-bottom: 1px solid #000; color: #880000; font-weight: bold;">
430 </td>
</tr>
<tr>
<td><a href="#" id="west5" title="Total available">Account Balance</a></td>
<td style="text-align: right; border-bottom: 3px double #000; color: #119911; font-weight: bold;">
840 </td>
</tr>
<tr>
<td></td>
<td style="padding: 5px;">
<center>
<form id="request_bill" method="POST" action="index.php?page=dashboard">
<input type="hidden" name="secret_token" value="" />
<input type="hidden" name="request_payout" value="1" />
<input type="submit" class="btn blue large" value="Request Payout" />
</form>
</center>
</td>
</tr>
</table>
</div>
</div>
</div>
正如你所看到的,它不是一个格式很好的 HTML,但我需要提取元素及其值,我的意思是,例如:“每日收入”和“150”| “周收益”和“500”...
我认为“id”属性可能会有所帮助,但是当我尝试解析它时,它会崩溃。
我正在使用的 Python 代码是:
def parseo(archivohtml):
html = archivohtml
parsed_html = BeautifulSoup(html)
par = parsed_html.find('td', attrs={'id':'west1'}).string
print par
其中archivohtml是登录网页后保存的html文件
当我运行脚本时,我只会得到错误。
我也试过这样做:
def parseo(archivohtml):
soup = BeautifulSoup()
html = archivohtml
parsed_html = soup(html)
par = soup.parsed_html.find('td', attrs={'id':'west1'}).string
print par
但结果还是一样。