网页上有我需要检索的产品代码,它位于以下HTML部分:
<table...>
<tr>
<td>
<font size="2">Product Code#</font>
<br>
<font size="1">2342343</font>
</td>
</tr>
</table>
所以我想最好的方法是首先引用带有文本值'Product Code#'的html元素,然后引用TD中的第二个字体标记。
想法?
答案 0 :(得分:1)
假设soup
是BeautifulSoup
个实例:
int(''.join(soup("font", size="1")[0](text=True)))
或者,如果您需要获得多个产品代码:
[int(''.join(font(text=True))) for font in soup("font", size="1")]
答案 1 :(得分:1)
我的策略是:
<font>
元素并找到父级的下一个兄弟<font>
元素代码:
from BeautifulSoup import BeautifulSoup
html = open("products.html").read()
soup = BeautifulSoup(html)
product_codes = [tag.parent.findNextSiblings('font')[0].contents[0]
for tag in
soup.findAll(text='Product Code#')]
答案 2 :(得分:0)
你可以使用这个正则表达式(或类似的东西):
<td>\n\ <font\ size="2">Product\ Code\#</font>\n\ <br>\n\ <font\ size="1">(?<ProductCode>.+?)</font>\n\ </td>
根据你的RegExp引擎你可能会删除一些转义...我很谨慎。
答案 3 :(得分:0)
不要使用正则表达式来解析HTML。我将使用以下XPATH执行此任务:
//TABLE/TR/TD/FONT[@size='1']
或者,如果不保证字体大小属性在那里并且等于1:
//FONT[text()='Product Code#']/parent::*/FONT[2]