2024-10-03 11:15:52 发布
网友
我有一个包含更多子元素的div元素。我只想从该div的所有子元素中删除文本。是否有内置函数或垃圾属性。在
示例: 我需要从http://www.jabong.com/z-collection-Olive-Mocassins-376735.html刮面包屑
从中获取内容的div id:breadcrumbs 期望产量:家用>;男士>;鞋>;休闲鞋>;Moccasins>;Olive Mocassins
您可以使用一个^{}和一个XPath表达式来选择ID为“breadcrumbs”的{}的所有子代文本节点,例如id("breadcrumbs")//text()
id("breadcrumbs")//text()
为了说明这一点,我将使用scrapy shell命令,它给您一个HtmlXPathSelector实例,hxs:
scrapy shell
HtmlXPathSelector
hxs
paul@wheezy:~$ scrapy shell http://www.jabong.com/z-collection-Olive-Mocassins-376735.html ... 2013-10-15 09:30:06+0200 [default] DEBUG: Crawled (200) <GET http://www.jabong.com/z-collection-Olive-Mocassins-376735.html> (referer: None) [s] Available Scrapy objects: [s] hxs <HtmlXPathSelector xpath=None data=u'<html><head><meta http-equiv="Content-Ty'> ... In [1]: hxs.select('id("breadcrumbs")//text()').extract() Out[1]: [u'\r\n ', u'Home', u'\r\n ', u'>', u'\r\n ', u'Men', u'\r\n ', u'>', u'\r\n ', u'Shoes', u'\r\n ', u'>', u'\r\n ', u'Casual Shoes', u'\r\n ', u'>', u'\r\n ', u'Moccasins', u'\r\n ', u'>', u'\r\n ', u'Olive Mocassins', u'\r\n \r\n', u'\r\n ', u'\r\n\r\n ']
如果需要删除这些空白字符,可以将map()与unicode.strip一起使用
map()
unicode.strip
您可以使用filter()删除这些空行
filter()
下面是一个将breadcrumbs作为单个字符串的单行线,再次使用str.join()和map():
str.join()
In [9]: ' '.join(map(unicode.strip, hxs.select('id("breadcrumbs")//text()').extract())).strip() Out[9]: u'Home > Men > Shoes > Casual Shoes > Moccasins > Olive Mocassins'
甚至:
In [10]: ' '.join(filter(bool, map(unicode.strip, hxs.select('id("breadcrumbs")//text()').extract()))) Out[10]: u'Home > Men > Shoes > Casual Shoes > Moccasins > Olive Mocassins'
您可以使用一个^{} 和一个XPath表达式来选择ID为“breadcrumbs”的{}的所有子代文本节点,例如
id("breadcrumbs")//text()
为了说明这一点,我将使用
scrapy shell
命令,它给您一个HtmlXPathSelector
实例,hxs
:如果需要删除这些空白字符,可以将
^{pr2}$map()
与unicode.strip
一起使用您可以使用
^{3}$filter()
删除这些空行下面是一个将breadcrumbs作为单个字符串的单行线,再次使用
str.join()
和map()
:甚至:
相关问题 更多 >
编程相关推荐