如何用Python提取HTML表格中含<a>标签的<td>文本值
解决嵌套标签的文本提取问题
你碰到的这个问题很常见,原因是**.string只能返回单个文本节点的内容**——当你的里同时包含标签和直接的文本内容(比如(S205))时,这个元素有多个子节点,.string就会返回None。
解决方法很简单,把ilink.string换成ilink.get_text()就可以了!.get_text()会自动把当前元素下所有子节点的文本内容拼接在一起,正好能得到你想要的SWEET BEAN (S205)这种组合文本。
修改后的完整代码如下:
import requests from bs4 import BeautifulSoup import urllib.request race_link = 'http://racing.hkjc.com/racing/info/meeting/Results/English/Local/20171227/HV' sauce1 = urllib.request.urlopen(race_link).read() soup1 = BeautifulSoup(sauce1, 'html.parser') for link in soup1.find_all('tr', {'class': 'trBgGrey'}): for ilink in link.find_all('td'): # 用get_text()替代string,strip=True可去除多余空白字符 print(ilink.get_text(strip=True))
额外补充:如果你需要控制文本之间的分隔方式,还可以给.get_text()传参数,比如ilink.get_text(separator=' | ')会用竖线分隔不同子节点的文本,不过这里默认的拼接就完全满足你的需求了。
内容的提问来源于stack exchange,提问作者how2code
相关产品推荐
相关产品推荐

