我的电子邮件中嵌入了HTML表格。我使用BeautifulSoup
来提取数据表,但是在表格之外的数据是我用这种方法无法捕获的。
以下是包含两个数据表的示例电子邮件:
就像我说的,我使用bs4
从表格的单元格中捕获信息。然后我将此数据转换为DataFrame。我还想捕获Package
价格,以便将其附加到每个Fish-Weight值。简单的命令如:
for line in f:
if ("Package" in line):
print("line:", line)
...无法打印任何内容。当我仔细检查HTML时,我发现它看起来像这样:
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>FW: NEFS 11 fish available</title>
<link rel="important stylesheet" href="">
<style>div.headerdisplayname {font-weight:bold;}</style></head>
<body>
<table border=0 cellspacing=0 cellpadding=0 width="100%" class="header-part1"><tr><td><b>Subject: </b>FW: NEFS 11 fish available</td></tr><tr><td><b>From: </b>Claire Fitz-Gerald <claire@capecodfishermen.org></td></tr><tr><td><b>Date: </b>6/2/2016 5:55 PM</td></tr></table><br>
<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; ">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:"Franklin Gothic Demi";
panose-1:2 11 7 3 2 1 2 2 2 4;}
@font-face
{font-family:"Franklin Gothic Book";
panose-1:2 11 5 3 2 1 2 2 2 4;}
@font-face
{font-family:Verdana;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
{mso-style-name:msonormal;
mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
font-size:12.0pt;
font-family:"Times New Roman",serif;}
span.EmailStyle18
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri",sans-serif;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Please see below quota listings.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Thanks,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Franklin Gothic Book",sans-serif;color:#1F497D">Claire Fitz-Gerald<o:p></o:p></span></p>
<p class="MsoNormal"><i><span style="font-size:10.0pt;font-family:"Franklin Gothic Book",sans-serif;color:#1F497D"><o:p> </o:p></span></i></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Franklin Gothic Demi",sans-serif;color:#002776">Cape Cod Commercial Fishermen's Alliance<o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Franklin Gothic Book",sans-serif;color:#DE3500">~ Small Boats. Big Ideas. ~</span></b><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#DE3500"><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Franklin Gothic Demi",sans-serif;color:#002776">Celebrating 25 years. Navigating 25 more.</span></b><span style="font-size:11.0pt;font-family:"Franklin Gothic Book",sans-serif;color:#002060">
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> NEFS V [mailto:nefsector5@gmail.com]
<br>
<b>Sent:</b> Thursday, June 02, 2016 12:32 PM<br>
<b>To:</b> Ben Martens <ben@mainecoastfishermen.org>; Claire Fitz-Gerald <claire@capecodfishermen.org>; Dave Leveille 2 & 6 <nefs02@gmail.com>; Hank SHS <shsector@gmail.com>; John Haran 10 & 13 <sector13@comcast.net>; Linda MaCann 7 & 8 <nbsector07@comcast.net>;
mike walsh 6 <fisherwoman2042003@yahoo.com>; Patrick NCCS <patrick@penobscoteast.org>; paula lynch 12 <paulasectorx@yahoo.com>; Spice Montgomery 3 <nefsiii@gmail.com>; Stephanie Rafael-DeMello 9 <nbsector9@gmail.com>; tory bramante 6 <torybra@aol.com>; NEFS
11 Charles Felch <boat1151@aol.com>; NEFS 11 David Goethel <egoethel@comcast.net>; NEFS 11 Fanel Dobre <stormdancer4@yahoo.com>; NEFS 11 Geordie King <kinggeordie@comcast.net>; NEFS 11 Jamie Hayward <jamienjolyn@comcast.net>; NEFS 11 Jayson Driscoll <jaysondriscoll@yahoo.com>;
NEFS 11 Mike and Pat Anderson <padi.anderson@gmail.com>; NEFS 11 Neil Pike <sandipike@hotmail.com>; NEFS 11 Richard Anderson <monkfishing@hotmail.com>; NEFS 11 Tom Lyons <tomrlyons@hotmail.com>; Puggy <charles.felch@yahoo.com><br>
<b>Subject:</b> NEFS 11 fish available<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif">All,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif">NEFS 11 has the following available:<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><b><u><span style="font-size:13.5pt;font-family:"Arial",sans-serif">Package 1: $ 500.00</span></u></b><span style="font-family:"Arial",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" width="396" style="width:297.0pt;border-collapse:collapse">
<tbody>
<tr style="height:15.0pt">
<td width="232" style="width:174.0pt;padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">gb cod east</span><o:p></o:p></p>
</td>
<td width="55" style="width:41.0pt;padding:0in 0in 0in 0in;height:15.0pt"></td>
<td width="109" style="width:82.0pt;padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">1</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">gb cod west</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">5</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">gom cod</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">148</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">gb haddock east</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">1</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">gb haddock west</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">2</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">gom haddock</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">12</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">white hake</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">4</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">pollock</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">162</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">redfish</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">25</span><o:p></o:p></p>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif"><o:p> </o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif"></span><b><u><span style="font-size:13.5pt;font-family:"Arial",sans-serif">Package 2: $ 5,225.00</span></u></b><span style="font-family:"Arial",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" width="387" style="width:290.0pt;border-collapse:collapse">
<tbody>
<tr style="height:15.0pt">
<td width="232" style="width:174.0pt;padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">gom cod</span><o:p></o:p></p>
</td>
<td width="45" style="width:34.0pt;padding:0in 0in 0in 0in;height:15.0pt"></td>
<td width="109" style="width:82.0pt;padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">916</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">gom winter fl</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">498</span><o:p></o:p></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif;display:none"><o:p> </o:p></span></p>
<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" width="387" style="width:290.0pt;border-collapse:collapse">
<tbody>
<tr style="height:15.0pt">
<td width="232" style="width:174.0pt;padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">gom haddock</span><o:p></o:p></p>
</td>
<td width="45" style="width:34.0pt;padding:0in 0in 0in 0in;height:15.0pt"></td>
<td width="109" style="width:82.0pt;padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">284</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">white hake</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">505</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">dab</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">1,293</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">pollock</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">812</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">redfish</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">1,910</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">witch fl</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">352</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">cc/gom yellowtail</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">306</span><o:p></o:p></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif"><o:p></o:p></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><b><u><span style="font-size:13.5pt;font-family:"Arial",sans-serif">Package 3: $ 44,150.00</span></u></b><span style="font-family:"Arial",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" width="449" style="width:337.0pt;border-collapse:collapse">
<tbody>
<tr style="height:15.0pt">
<td width="232" style="width:174.0pt;padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">gb cod east</span><o:p></o:p></p>
</td>
<td width="45" style="width:34.0pt;padding:0in 0in 0in 0in;height:15.0pt"></td>
<td width="63" style="width:47.0pt;padding:0in 0in 0in 0in;height:15.0pt"></td>
<td width="109" style="width:82.0pt;padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">5</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">gb cod west</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">17</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">gom cod</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">5,000</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">gom winter fl</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">2,900</span><o:p></o:p></p>
</td>
</tr>
</tbody>
</table>
</div>
<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" width="449" style="width:337.0pt;border-collapse:collapse">
<tbody>
<tr style="height:15.0pt">
<td width="232" style="width:174.0pt;padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">gb haddock east</span><o:p></o:p></p>
</td>
<td width="45" style="width:34.0pt;padding:0in 0in 0in 0in;height:15.0pt"></td>
<td width="63" style="width:47.0pt;padding:0in 0in 0in 0in;height:15.0pt"></td>
<td width="109" style="width:82.0pt;padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">836</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">gb haddock west</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">2,118</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">gom haddock</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">18,000</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">white hake</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">8,842</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">dab</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">8,650</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">pollock</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">78,000</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">redfish</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">35,923</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">witch fl</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">3,250</span><o:p></o:p></p>
</td>
</tr>
<tr style="height:15.0pt">
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">cc/gom yellowtail</span><o:p></o:p></p>
</td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt"></td>
<td style="padding:0in 0in 0in 0in;height:15.0pt">
<p class="MsoNormal"><span style="color:black">2,250</span><o:p></o:p></p>
</td>
</tr>
</tbody>
</table>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><b><u><span style="font-size:13.5pt;font-family:"Arial",sans-serif">Package 4: $ 43,135.00</span></u></b><span style="font-family:"Arial",sans-serif"><o:p></o:p></span></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana",sans-serif">GOM cod 6,900</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana",sans-serif">dabs 3,800</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana",sans-serif">witch fl 4,000</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Verdana",sans-serif">cc/gom yt 5,100</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif"><o:p> </o:p></span></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><b><span style="font-size:13.5pt;font-family:"Arial",sans-serif">GB West Cod - 3,251 lbs libe weight = $ 6,500.00</span></b><span style="font-family:"Arial",sans-serif"><o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif"><br clear="all">
<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><br>
-- <o:p></o:p></p>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal">Daniel Salerno<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">NEFS 5 & NEFS 11<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">401-932-0070<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">401-633-6539 (fax)<o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
</body>
</html>
我不是HTML的专家,有没有办法捕获Package
价格并将其附加到相应的Fish-Weight值?
我的相关代码是:
package_regex = re.compile(r'package(.*)(?=\n)', re.IGNORECASE)
with open(file_path) as in_f:
for line in in_f:
for match in package_regex.finditer(in_f.read()):
price, stuff = match.groups()
print("price:", price)
print("stuff:", stuff)
with open(file_path) as in_f:
msg = email.message_from_file(in_f) #type: <class 'email.message.Messgae'>
html_msg = msg.get_payload(1) #type: <class 'email.message.Message'>
body = html_msg.get_payload(decode=True) #type: <class 'bytes'> or type: 'int'
html = body.decode() #type: <class 'str'>
for line in html:
if ("Package" in line):
print("line:", line)
tables = bs4.BeautifulSoup(html).find_all("table") #type: <class 'bs4.element.ResultSet'>
data = []
for table in tables:
for row in table.find_all("tr"):
data.append([cell.text.strip() for cell in row.find_all("td")])
答案 0 :(得分:1)
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc, 'html.parser')
tables = soup.find_all(lambda tag: tag.name=='table') # and tag.has_attr('id') and tag['id']=="Table1")
chunks = soup.find_all('p', {'class' : "MsoNormal"})
for line in chunks:
if 'Package' in line.text:
print line.text
for table in tables:
for row in table.find_all("tr"):
print [cell.text.strip() for cell in row.find_all("td")]
输出:
Package 1: $ 500.00
[u'Subject: FW: NEFS 11 fish available']
[u'From: Claire Fitz-Gerald']
[u'Date: 6/2/2016 5:55 PM']
[u'gb cod east', u'', u'1']
[u'gb cod west', u'', u'5']
[u'gom cod', u'', u'148']
[u'gb haddock east', u'', u'1']
[u'gb haddock west', u'', u'2']
[u'gom haddock', u'', u'12']
[u'white hake', u'', u'4']
[u'pollock', u'', u'162']
[u'redfish', u'', u'25']
[u'gom cod', u'', u'916']
[u'gom winter fl', u'', u'498']
[u'gom haddock', u'', u'284']
[u'white hake', u'', u'505']
[u'dab', u'', u'1,293']
[u'pollock', u'', u'812']
[u'redfish', u'', u'1,910']
[u'witch fl', u'', u'352']
[u'cc/gom yellowtail', u'', u'306']
[u'gb cod east', u'', u'', u'5']
[u'gb cod west', u'', u'', u'17']
[u'gom cod', u'', u'', u'5,000']
[u'gom winter fl', u'', u'', u'2,900']
[u'gb haddock east', u'', u'', u'836']
[u'gb haddock west', u'', u'', u'2,118']
[u'gom haddock', u'', u'', u'18,000']
[u'white hake', u'', u'', u'8,842']
[u'dab', u'', u'', u'8,650']
[u'pollock', u'', u'', u'78,000']
[u'redfish', u'', u'', u'35,923']
[u'witch fl', u'', u'', u'3,250']
[u'cc/gom yellowtail', u'', u'', u'2,250']
Package 2: $ 5,225.00
[u'Subject: FW: NEFS 11 fish available']
[u'From: Claire Fitz-Gerald']
[u'Date: 6/2/2016 5:55 PM']
[u'gb cod east', u'', u'1']
[u'gb cod west', u'', u'5']
[u'gom cod', u'', u'148']
[u'gb haddock east', u'', u'1']
[u'gb haddock west', u'', u'2']
[u'gom haddock', u'', u'12']
[u'white hake', u'', u'4']
[u'pollock', u'', u'162']
[u'redfish', u'', u'25']
[u'gom cod', u'', u'916']
[u'gom winter fl', u'', u'498']
[u'gom haddock', u'', u'284']
[u'white hake', u'', u'505']
[u'dab', u'', u'1,293']
[u'pollock', u'', u'812']
[u'redfish', u'', u'1,910']
[u'witch fl', u'', u'352']
[u'cc/gom yellowtail', u'', u'306']
[u'gb cod east', u'', u'', u'5']
[u'gb cod west', u'', u'', u'17']
[u'gom cod', u'', u'', u'5,000']
[u'gom winter fl', u'', u'', u'2,900']
[u'gb haddock east', u'', u'', u'836']
[u'gb haddock west', u'', u'', u'2,118']
[u'gom haddock', u'', u'', u'18,000']
[u'white hake', u'', u'', u'8,842']
[u'dab', u'', u'', u'8,650']
[u'pollock', u'', u'', u'78,000']
[u'redfish', u'', u'', u'35,923']
[u'witch fl', u'', u'', u'3,250']
[u'cc/gom yellowtail', u'', u'', u'2,250']
Package 3: $ 44,150.00
[u'Subject: FW: NEFS 11 fish available']
[u'From: Claire Fitz-Gerald']
[u'Date: 6/2/2016 5:55 PM']
[u'gb cod east', u'', u'1']
[u'gb cod west', u'', u'5']
[u'gom cod', u'', u'148']
[u'gb haddock east', u'', u'1']
[u'gb haddock west', u'', u'2']
[u'gom haddock', u'', u'12']
[u'white hake', u'', u'4']
[u'pollock', u'', u'162']
[u'redfish', u'', u'25']
[u'gom cod', u'', u'916']
[u'gom winter fl', u'', u'498']
[u'gom haddock', u'', u'284']
[u'white hake', u'', u'505']
[u'dab', u'', u'1,293']
[u'pollock', u'', u'812']
[u'redfish', u'', u'1,910']
[u'witch fl', u'', u'352']
[u'cc/gom yellowtail', u'', u'306']
[u'gb cod east', u'', u'', u'5']
[u'gb cod west', u'', u'', u'17']
[u'gom cod', u'', u'', u'5,000']
[u'gom winter fl', u'', u'', u'2,900']
[u'gb haddock east', u'', u'', u'836']
[u'gb haddock west', u'', u'', u'2,118']
[u'gom haddock', u'', u'', u'18,000']
[u'white hake', u'', u'', u'8,842']
[u'dab', u'', u'', u'8,650']
[u'pollock', u'', u'', u'78,000']
[u'redfish', u'', u'', u'35,923']
[u'witch fl', u'', u'', u'3,250']
[u'cc/gom yellowtail', u'', u'', u'2,250']
Package 4: $ 43,135.00
[u'Subject: FW: NEFS 11 fish available']
[u'From: Claire Fitz-Gerald']
[u'Date: 6/2/2016 5:55 PM']
[u'gb cod east', u'', u'1']
[u'gb cod west', u'', u'5']
[u'gom cod', u'', u'148']
[u'gb haddock east', u'', u'1']
[u'gb haddock west', u'', u'2']
[u'gom haddock', u'', u'12']
[u'white hake', u'', u'4']
[u'pollock', u'', u'162']
[u'redfish', u'', u'25']
[u'gom cod', u'', u'916']
[u'gom winter fl', u'', u'498']
[u'gom haddock', u'', u'284']
[u'white hake', u'', u'505']
[u'dab', u'', u'1,293']
[u'pollock', u'', u'812']
[u'redfish', u'', u'1,910']
[u'witch fl', u'', u'352']
[u'cc/gom yellowtail', u'', u'306']
[u'gb cod east', u'', u'', u'5']
[u'gb cod west', u'', u'', u'17']
[u'gom cod', u'', u'', u'5,000']
[u'gom winter fl', u'', u'', u'2,900']
[u'gb haddock east', u'', u'', u'836']
[u'gb haddock west', u'', u'', u'2,118']
[u'gom haddock', u'', u'', u'18,000']
[u'white hake', u'', u'', u'8,842']
[u'dab', u'', u'', u'8,650']
[u'pollock', u'', u'', u'78,000']
[u'redfish', u'', u'', u'35,923']
[u'witch fl', u'', u'', u'3,250']
[u'cc/gom yellowtail', u'', u'', u'2,250']
不幸的是,每次迭代都有一些冗余的,非相关的重复
[u'Subject: FW: NEFS 11 fish available']
[u'From: Claire Fitz-Gerald']
[u'Date: 6/2/2016 5:55 PM']
如果需要,可以规避。