我有一个html文件如下。我想要Python做的是,当它看到关键字“存款到现金账户”时,它将抓取“存款到现金账户”的class=“s14”和与其最近的$数字(12.32)的class=“s14”。“资产转入”与(5.34)相同。你知道吗
<tr style="height:21pt">
<td style="width:366pt">
<p class="s14" style="padding-top: 7pt;padding-left: 19pt;text-indent: 0pt;text-align: left;">Deposits to Cash account</p>
</td>
<td style="width:150pt">
<p class="s14" style="padding-top: 7pt;padding-right: 2pt;text-indent: 0pt;text-align: right;">$12.32</p>
</td>
</tr>
<tr style="height:21pt">
<td style="width:366pt">
<p class="s14" style="padding-top: 2pt;padding-left: 19pt;text-indent: 0pt;text-align: left;">Asset transfers in</p>
</td>
<td style="width:150pt">
<p class="s14" style="padding-top: 2pt;padding-right: 2pt;text-indent: 0pt;text-align: right;">$5.34</p>
</td>
</tr>
我试着用FOR循环逐行遍历html,我用Regex得到一行,比如“存款到现金账户”,但不知道如何跨行抓取12.32
。你知道吗
for line in htmlfile:
if ('Deposits to Cash account' in line):
lineClass = re.findall(r"<p (.*) style",line) #grab "class="s14"
print("inside for loop: ",lineClass)
if (lineClass[0] in line) and ('$' in line)
number = re.findall(r"\$(.*)",line)
print("outside for loop: ",lineClass)
预期结果应为字典:
["Deposits to Cash account": 12.32,
"Asset transfers":5.34]
错误消息是NameError: name 'lineClass' is not defined
此外,还将打印“inside for loop:”Class=s14“,并打印“outside for loop:”,其中丢失了“Class=s14”。感觉lineClass变量在for循环完成后被清除了。为什么
如果您不能使用第三方模块,例如
beautifulsoup
,那么可以使用Python的内置html.parser
(doc)生成“穷人”HTML解析器:打印:
然而,最好使用成熟的库,如
beautifulsoup
、selenium
、scrapy
或lxml
。有了它们,您可以使用XPath、CSS选择器等丰富的api轻松地获取数据。你知道吗相关问题 更多 >
编程相关推荐