爬蟲--lxml獲取節點所有子節點的文字
阿新 • • 發佈:2021-09-08
原文:
https://blog.csdn.net/qq_26235879/article/details/113090603
https://blog.csdn.net/weixin_33902301/article/details/118046434
from lxml import etree def get_all_child_node_text(): txt = """ <div class="content"> <p>輸入只有一行半徑r.</p> </div> <div class="content"> <p>輸出有多行,每一行是跟輸入對應面積.</p> <p>輸出保留6位小數</p> </div>View Code""" html = etree.HTML(txt) contents = html.xpath('//div[@class="content"]') lst = [] for e in contents: # 第一種方式,通過使用xpath的string()方法 # string(.)中的.代表當前節點 # lst.append(e.xpath('string(.)').strip()) # ['輸入只有一行半徑r.', '輸出有多行,每一行是跟輸入對應面積.\n 輸出保留6位小數'] #lst.append(e.xpath('string(.)')) # ['\n 輸入只有一行半徑r.\n ', '\n 輸出有多行,每一行是跟輸入對應面積.\n 輸出保留6位小數\n '] # lst.append(e.xpath('string(.)').replace('\n', '').strip()) # ['輸入只有一行半徑r.', '輸出有多行,每一行是跟輸入對應面積. 輸出保留6位小數'] # 第二種方式使用lxml節點自帶的方法itertext()# lst.append(''.join(e.itertext())) # ['\n 輸入只有一行半徑r.\n ', '\n 輸出有多行,每一行是跟輸入對應面積.\n 輸出保留6位小數\n '] lst.append(''.join(e.itertext()).replace('\n', '').strip()) # ['輸入只有一行半徑r.', '輸出有多行,每一行是跟輸入對應面積. 輸出保留6位小數'] print(lst) if __name__ == '__main__': get_all_child_node_text()