如何使用BeautifulSoup结合Selenium提取HTML指定td节点内的特定文本元素
提取指定文本元素的解决方案
我来帮你解决这个问题~你之前用.text.strip()得到的是带换行的合并文本,那是因为这个方法会把目标元素下所有子元素的文本都拼接在一起,所以没法直接拆分出单个数字。咱们换个思路,直接定位到每个数字所在的<div>元素就行:
具体实现代码
target_td = td_list[9] # 找到目标td下所有包含数字的div元素 div_items = target_td.find_all("div") # 提取第1个(索引0)和第4个(索引3)div的文本 result_10 = div_items[0].text.strip() result_2 = div_items[3].text.strip() # 如果想一次性获取到列表里,可以用列表推导式 wanted_results = [div_items[i].text.strip() for i in [0, 3]] print(wanted_results) # 输出结果:['10', '2']
代码说明
target_td.find_all("div"):会把目标<td>里的四个包含数字的<div>全部找出来,返回一个元素列表,顺序和HTML里的顺序一致。- 因为HTML里的数字顺序是
10(第1个div)、9(第2个)、7(第3个)、2(第4个),对应的列表索引是0、1、2、3,所以直接取索引0和3的元素文本就可以拿到你需要的10和2。 .strip()用来去除文本可能带的空白字符,保证结果干净。
内容的提问来源于stack exchange,提问作者jeffrey123520
相关产品推荐
相关产品推荐

