使用BeautifulSoup为表格首个<td>元素添加属性的实现方法
问题:用BeautifulSoup为表格首个
<td>添加colspan属性 需求
- 获取目标网站中指定表格的HTML代码
- 为表格内第一个
<td>元素添加colspan="4"属性 - 最终结果保留在
description变量中
现有代码
try: description=hun.select('#description > div.tab-pane-body > div > div > div > table')[0] description+="<style type=text/css>td:first-child { font-weight: bold; width: 5%; } td:nth-child(2) { width: 380px } td:nth-child(3) { font-weight: bold; }</style>" except: description=None
目标表格结构
<table border="0" cellpadding="0" cellspacing="0" width="704"> <tbody> <tr> <td valign="top" width="704" style=""> <p><span>Short description </span></p> </td> </tr> <tr> <td valign="top" width="123" style=""> <p><span>Additional data</span></p> </td> </tr> </tbody> </table>
错误代码及问题
错误代码:
hun=BeautifulSoup(f,'html.parser') try: description2=hun.select('#description > div.tab-pane-body > div > div > div > table')[0] description2+="<style type=text/css>td:first-child { font-weight: bold; width: 5%; } td:nth-child(2) { width: 380px } td:nth-child(3) { font-weight: bold; }</style>" soup = BeautifulSoup(description2, 'html.parser') description = soup.td['colspan'] = 4
问题:执行后description的值为4,未得到修改后的完整表格HTML。原因是直接将属性赋值的结果(即4)赋值给了description,而非获取修改后的soup对象的完整HTML内容。
正确实现代码
hun=BeautifulSoup(f,'html.parser') try: # 获取目标表格元素 description2 = hun.select('#description > div.tab-pane-body > div > div > div > table')[0] # 添加样式代码 description2 += "<style type=text/css>td:first-child { font-weight: bold; width: 5%; } td:nth-child(2) { width: 380px } td:nth-child(3) { font-weight: bold; }</style>" # 解析拼接后的内容 soup = BeautifulSoup(description2, 'html.parser') # 为第一个td元素添加colspan属性 soup.td['colspan'] = 4 # 获取修改后的完整HTML内容 description = str(soup) except: description = None
内容的提问来源于stack exchange,提问作者Adrian
相关产品推荐
相关产品推荐

